我安装了一台 REDIS ,
同一台机器的通过公网 IP 连接这个 redis 取 1000 条记录,每次都 timeout ,后来打 log 才发现,取一条记录要几百豪秒, 1000 条取完要将近几十秒。
查了很久,后来改成通过 127.0.0.1 连接, 1000 条记录用了不到 1 秒。
公网 IP 访问为什么会这么慢? 广东 1 区的服务器。
1
wevsty 2017-04-19 23:13:03 +08:00
因为公网 IP 并不是直接分配给本机的。
如果你用 127.0.0.1 这个地址实际上是内核帮你进行缓冲区拷贝,实际上并不涉及网络层面的 IO 操作。 但是使用公网 IP 的话内核不知道这个公网 IP 就是本机,所以会帮你传输数据到网关,再由网关传回本机处理。这中间就涉及到了网络层面的 IO 。 这中间多少都是会产生一些效率损失的,至于需要几百毫秒这么长时间个人觉得还是有点不对,另外 redis 还是不要随意允许公开访问,会有安全性问题。 |
2
bestie 2017-04-19 23:50:43 +08:00
你可以查看一下网卡 ip ,并不是公网 ip ,绕了一圈能不慢么
|
3
ericFork 2017-04-20 04:21:23 +08:00
看到寻址差点以为穿越到汇编年代
|