我有一个主服务器,它在web上抓取数据,并做索引。然后开始向所有镜像服务器进行镜像。
我使用rsync和rsh。
但是在开始更新镜像服务器之前,需要时间。我想知道这个延迟是在哪里发生的。
我的理解
反向DNS查找可能需要一些时间。
我的问题
- 在rsh.c代码或在rsync代码中添加一些日志是否正确?
- 如果第一个问题的答案是肯定的,那么我想做一个时间列表,当反向DNS查找是启用和当反向DNS查找是禁用,所以告诉我可以做些什么?
告诉我在哪里可以添加日志来记录所消耗的时间?
如果我的理解和问题不符合我想要的任务或不相关,那么请纠正我,并给我更好的路径,使我能够实现我的目标。
提前感谢。期待您的回复。
编辑2
基本上我是在分析所消耗的时间来确定延迟的原因。不需要修改现有的代码。
我的任务是分析代码,找出延迟的原因。那它。
我想现在我任务的所有事情你都清楚了。
在更改rsh之前,您可以尝试使用strace来查看哪个系统调用花费的时间更长。
strace -c将生成一个系统调用列表和这些调用使用的时间百分比。(也应该有助于回答第二个问题)
要使DNS查找明显,可以使用ltrace:
的例子:
ltrace -c -o log.txt wget http://dkjflsdfjka/
那么log.txt将会有如下内容:
root@host:~# head log.txt
% time seconds usecs/call calls function
------ ----------- ----------- --------- --------------------
74.27 0.130779 130779 1 getaddrinfo
6.63 0.011680 33 344 strlen
3.05 0.005371 35 152 free
2.98 0.005255 35 147 malloc
2.74 0.004830 38 127 fgets
那么你可以看到…getaddrinfo调用占用了大部分时间