问题现象
nginx服务器,执行nginx -t,返回时间很久
解决
通过用ps- ef获取nginx进程pid
1 | ps -ef |grep nginx |
查看这个进程在哪一步耗时
1 | strace -o output.txt -T -tt -e trace=all -p 1679 //strace命令查看每一步执行的时间开销 |
发现大量fd=5的文件描述符出现了Timeout。
进一步查看fd=5 且进程号为1679的操作
1 | lsof -d 5 |grep 1679 |
进一步排查发现,该步操作使用UDP协议,请求的是系统的domain服务(即DNS服务)
仔细查看系统/etc/resolv.conf 配置,发现dns解析有问题,需修改为正常DNS服务