回覆列表
  • 1 # 網路圈

    在Nginx + PHP-FPM這種架構模式下,因為Nginx充當的是反向代理伺服器,而超時大機率是由於PHP-FPM執行PHP指令碼導致的超時,所以我們不建議修改Nginx的超時配置,保持預設即可。而我們的重點工作是要檢查什麼原因導致PHP指令碼執行慢的。

    那該如何定位問題呢?只能用排除法來一步步排查,現在總結我的經驗以供大家參考:

    1、開啟PHP錯誤輸出

    首先我們要保證PHP錯誤開關是開啟的,在php.ini中找到 display_errors 配置項設為 On ,然後重啟PHP-FPM使配置生效。

    2、檢查程式碼中是否設定了 set_time_limit(0) ,如果沒有可以加上這行程式碼。

    3、檢視Nginx和PHP-FPM日誌,看是否有錯誤丟擲(比如緩衝區超出、PHP程序不夠等),如果有則依據錯誤資訊對應解決。

    4、找到慢請求URL對應的程式原始碼,檢視是否存在耗時操作,比如說:

    程式裡請求了外部網路資源導致的超時,如:cURL、file_get_contents之類函式;

    死迴圈;

    資料庫、Redis連結超時等;

    必要時藉助xhprof來分析PHP指令碼瓶頸。

    透過以上步聚基本上是可以定位問題所在的,個人覺得PHP指令碼執行慢導致超時的可能性較大。

  • 中秋節和大豐收的關聯?
  • 美國的無限制格鬥比賽?