1.問題分析
nginx訪問出現504 gateway time-out,一般是由於程式執行時間過長導致響應超時,例如程式需要執行90秒,而nginx最大響應等待時間為30秒,這樣就會出現超時。
通常有以下幾種情況導致
1.程式在處理大量資料,導致等待超時。
2.程式中呼叫外部請求,而外部請求響應超時。
3.連線資料庫失敗而沒有停止,死迴圈重新連。
出現這種情況,我們可以先優化程式,縮短執行時間。另一方面,可以調大nginx超時限制的引數,使程式可以正常執行。
對於訪問超時的設定,nginx與php都有相關的設定,可以逐一進行修改。
nginx配置
nginx.conf中,設定以下幾個引數,增加超時時間
fastcgi_connect_timeout
fastcgi連線超時時間,預設60秒
fastcgi_send_timeout
nginx 程序向 fastcgi 程序傳送請求過程的超時時間,預設值60秒
fastcgi_read_timeout
fastcgi 程序向 nginx 程序傳送輸出過程的超時時間,預設值60秒
php配置
php.ini
max_execution_time
php指令碼最大執行時間
php-fpm
request_terminate_timeout
設定單個請求的超時時間
php程式中可加入set_time_limit(seconds)設定最長執行時間
例如 set_time_limit(0) 表示不超時。
如何正確配置Nginx PHP
對很多人而言,配置nginx php無外乎就是搜尋一篇教程,然後拷貝貼上。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝貼上,早晚有一天會為此付出代價。假設我們用php實現了乙個前端控制器,或者直白點說就是統一入口 把php請求都傳送到同乙個檔案...
如何正確配置Nginx PHP
對很多人而言,配置nginx php無外乎就是搜尋一篇教程,然後拷貝貼上。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝貼上,早晚有一天會為此付出代價。假設我們用php實現了乙個前端控制器,或者直白點說就是統一入口 把php請求都傳送到同乙個檔案...
如何正確配置 Nginx PHP
對很多人而言,配置nginx php無外乎就是搜尋一篇教程,然後拷貝貼上。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝貼上,早晚有一天會為此付出代價。假設我們用php實現了乙個前端控制器,或者直白點說就是統一入口 把php請求都傳送到同乙個檔案...