有個內部接口 , 另外同事會調用該接口 , 把一份郵件內容上傳到這個接口
對方反應該接口有調用超時現象
排查思路;
排查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}'
具體解釋
-s 1024是展示的數據大小
-tt 顯示毫秒值
-r 顯示每個系統調用的耗時
awk里面的$3獲取的就是系統調用的耗時字段 , 打印出大於0.1秒的系統調用函數
可以看到所有耗時超過0.1秒的系統調用 , 對照代碼就可以找到了