有個內部接口 , 另外同事會調用該接口 , 把一份郵件內容上傳到這個接口php
對方反應該接口有調用超時現象函數
排查思路;php-fpm
排查access日誌 , 看到有499狀態碼 , 響應時間是5秒 , 能夠肯定的是對方設置了超時時間是5秒日誌
對方想要把超時時間儘可能小 , 所以繼續排查代碼中可能速度慢的地方 , 使用strace監聽全部的fpm進程接口
strace $(pidof 'php-fpm'|sed 's/\([0-9]*\)/-p \1/g') -s 1024 -tt -r 2>&1|awk '{if ($3>0.1) print $3,$0}'進程
具體解釋awk
-s 1024是展現的數據大小sed
-tt 顯示毫秒值數據
-r 顯示每一個系統調用的耗時時間
awk裏面的$3獲取的就是系統調用的耗時字段 , 打印出大於0.1秒的系統調用函數
能夠看到全部耗時超過0.1秒的系統調用 , 對照代碼就能夠找到了