記一次nginx -t非常慢的排障經歷


在一次修改nginx配置時候,執行
case:
#/usr/local/nginx/sbin/nginx -t
出現執行命令出現很久沒返回結果,也沒返回成功或是失敗,就是一直卡住的狀態,嚴重影響nginx配置文件修改。
-t            : test configuration and exit   //-t就是檢查nginx配置檢查。
出現此問題之后,開始着手排查原因。
 
solution:
於是用ps-ef獲取到改進程的pid,想知道這個進程到底在哪一步耗時
ps -ef |grep nginx
拿到pid是3911。
#strace -o output.txt -T -tt -e trace=all -p 3911     //strace命令查看每一步執行的時間開銷
 
 
 
發現大量fd=5的文件描述符出現了timeout。
 
於是進一步查看fd=5 且進程號為3911的操作,到底在干嗎:
原來是這一步操作耗時由5s之久,
進一步排查發現,該步操作是用UDP協議,請求的是系統的domain服務(即DNS服務)
仔細查看系統/etc/resolv.conf 配置,發現dns的第一個nameserver 真的是10.1.1.172。
后經確認,此nameserver的所在主機出現故障,還沒維護好。
至此,完成了一次完整的排障經歷。
 
關鍵點在於:
1、善於用strace定位問題;
2、理解fd(file description) 文件描述符的含義;
3、思考總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM