在一次修改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、思考總結 
            
 
           