当缓存服务器距离较远,延迟会增加吗?我尝试使用ping和tcpdump进行计算
这是什么?
在我的系统中,从前端服务器到memcached服务器的连接次数相当多。在数据中心中,以前前端服务器和缓存服务器都在同一片段中,物理上也很近。由于某种情况,必须替换服务器,暂时将其放在不同的片段中,物理上也更远,并且中间会有一些交换机和路由器。这可能导致从新的前端服务器连接到旧的memcached服务器时存在延迟问题。从网络的角度来看,这是否会在应用程序的响应性能方面成为问题,或者与现在相比实际上并不重要,我在判断之前考虑的一些备忘录。
测量
测量的方式
取得ping的time的100次平均。
ping的time是什么意思?请参考链接:https://linuxjm.osdn.jp/html/netkit/man8/ping.8.html
进行往返时间和丢包数据的统计计算。
所以,只是往返的时间。
在TCP中,延迟是什么?在TCP中,每个数据包都会进行ACK,因此如果要发送的数据大小较大,数据包数量增加,则整体上每个数据包的延迟就会积累。因此,可以认为ping的往返时间增加直接导致了响应时间的延迟。
进行测试。
在同一段落中有两台服务器,一台是旧前端服务器(hoge-old-web),另一台是旧缓存服务器(hoge-cache)。
[myuser@hoge-old-web ~]$ ping -c 100 xx.xx.xx.xx > ./tmp_to_hoge-cache_ping
[myuser@hoge-old-web ~]$ grep "time=" ./tmp_to_hoge-cache_ping > ./tmp_to_hoge-cache_latency
[myuser@hoge-old-web ~]$ awk '{print $(NF-1)}' tmp_to_hoge-cache_latency | awk -F'=' '{sum+=$2} END{print sum/NR}'
0.14284
大约0.14毫秒
新的front服务器(hoge-new-web)=》旧的cache服务器(hoge-cache)
[root@hoge-new-web ~]# ping -c 100 xx.xx.xx.xx > ./tmp_to_hoge-cache_ping
[root@hoge-new-web ~]# grep "time=" ./tmp_to_hoge-cache_ping > ./tmp_to_hoge-cache_latency
[root@hoge-new-web check_latency]# awk '{print $(NF-1)}' tmp_to_hoge-cache_latency | awk -F'=' '{sum+=$2} END{print sum/NR}'
0.16793
大约0.16毫秒
Differential
0.16793减去0.14284等于0.02509毫秒。
换算成百分比:
0.02509除以0.14284再乘以100等于17%。
当访问前端时,memcached被频繁调用了多少次?
调用代码中缓存方法的次数很重要,但要考虑整个延迟,重要的是知道有多少数据包被发送。因此,我想用tcpdump来确认发送了多少数据包。
myuser@hoge-dev-web [~ ] $ sudo tcpdump -i eth0 > ./tmp_tcpdump_to_memcache
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C7136 packets captured
7136 packets received by filter // 全部でこれだけのパケットが1リクエストで通った
0 packets dropped by kernel
在其中连接到memcached的是什么?
myuser@hoge-dev-web [~ ] $ grep "xx.xx.xx.xx.11211 >" tmp_tcpdump_to_memcache -c
1579
来自memcached的数据包有1579个请求。(返回也有相同数量的数据包。由于ping的时间是RTT,所以只需要知道通过其中一条路径的次数即可。)
最大延迟会增长多久?
每个数据包的延迟为0.02509毫秒*1579=39.6毫秒。几乎没有误差,看起来不需要太在意。
总结
这次的事情,你不需要太在意延迟。