1
duanhui8 OP 求高手解答
|
2
Renylai 2018-04-26 15:56:51 +08:00
不熟悉 activeMQ 做法,小菜鸟我觉得这个写法走的网卡 TCP,如果是定义了管道文件.sock 走的是管道,内存的话就更不是这么写的了
|
3
duanhui8 OP 毕竟是本地通信,有没有可能被转换为共享内存的方式,传输?
|
4
duanhui8 OP 有高手能给个肯定的答案吗
|
5
pagict 2018-04-26 16:15:26 +08:00
如果是写 192.168.10.11 的话,还是会走网卡的吧
如果写 localhost 或者 127.0.0.1,目测就直接内存了 |
6
tempdban 2018-04-26 16:23:03 +08:00 via Android
都不走网卡直接环回
|
10
htfy96 2018-04-26 16:54:29 +08:00
Linux 本机回环有 fast path,虽然比 domain socket/pipe 还是慢一些(延时在 2x 左右,吞吐在 3x 左右),但不到万不得已不要考虑这些性能
|
11
duanhui8 OP @htfy96 谢谢。在做基础软件,高并发,高数据量,性能要求高,所以考虑性能多点。
既然没什么问题,先从其他方向优化了 |
13
changnet 2018-04-26 18:07:21 +08:00 via Android
不懂 ActiveMQ,但是按照惯例,127.0.0.1 或者 localhost 才是走回环。你这个应该是走网卡。因为默认根据 ip 寻址你这个就是你网卡的地址。
|
15
rrfeng 2018-04-26 18:53:42 +08:00 via Android
都是直接走 localhost 的。不管你填写哪个网卡的 IP 地址,这种包你甚至 tcpdump 抓不到,因为不会经过网卡的 buffer
|
17
htfy96 2018-04-26 19:09:46 +08:00
@changnet 在比较现代的内核上,包不会发给网卡驱动,查了 ARP 表之后是本机地址会直接走 fast path。可以开个 iperf,然后运行前后 ip addr -s 看一下 tx packets 的变化,就能发现走的还是 lo
|
18
flynaj 2018-04-26 21:07:34 +08:00 via Android
走网络啊,本机看路由表,可能走 lo,网络协议方便以后服务端分开,
|
19
kongkongyzt 2018-04-26 21:27:46 +08:00
今天遇到了类似的, 不过我的是 MySQL
localhost 的时候走的 unix domain socket. 127.0.0.1 的时候走的本地回环 192.168.0.103 (局域网中本机 ip) 的时候走的网卡 其实看一下你的路由表你就明白了, 不行你就 tcpdump 抓包看下就很显然了 |
20
duanhui8 OP @kongkongyzt 谢谢
|