一次在新系统中执行perl命令发现需要30秒的调用时间,经过测试,最后锁定时间消耗到use 平台开发的插件当中(后续精确到了use 邮件相关的插件。)一般来说use并没有做实际的操作。可能是在插件初始化的过程中有一些调用引起的问题。在排查过程中,使用到了strace这个命令,strace可以跟踪命令的调用以及耗时。

strace -o log -T perl a.pl

-o参数将日志重定向到log文件当中;
-T参数显示每次调用的时间;
效果如:

image-1655182677380

耗时记录在每一行最后<>当中,比对每一行的时间,就得出了插件执行命令慢的时候在执行什么调用

image-1655182745505

这几个耗时高达5秒,sin_port=htons(53)为dns端口,也就是21.93.26.2为dns服务器,host-21-93-32-11为主机名,dns服务器解析不了这个主机名,host-21-93-32-11的主机也没有配置主机名的解析,不然以主机名访问到了dns服务器。
就是说邮件插件初始化的时候尝试连接网络。至于为什么要连接,找不到。

Q.E.D.


知之为知之