中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx與FastCGI哪個影響超時時間

發布時間:2021-12-10 16:23:30 來源:億速云 閱讀:140 作者:iii 欄目:大數據

這篇文章主要介紹“Nginx與FastCGI哪個影響超時時間”,在日常操作中,相信很多人在Nginx與FastCGI哪個影響超時時間問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Nginx與FastCGI哪個影響超時時間”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

需求

一個php程序要跑一段時間,但是時間不確定。

問題:   

當該php程序運行超過一段時間被強制斷開連接。

PHP本身超時處理

在 php.ini 中,有一個參數 max_execution_time 可以設置 PHP 腳本的最大執行時間,但是,在 php-cgi(php-fpm) 中,該參數不會起效。真正能夠控制 PHP 腳本最大執行時:

<value name="request_terminate_timeout">0s</value>

就是說如果是使用 mod_php5.so 的模式運行 max_execution_time 是會生效的,但是如果是php-fpm模式中運行時不生效的。

max_execution_time

計算的只是PHP腳本本身執行的時間,執行之外的時間都不會計算在內。哪些屬于執行之外的時間呢?包含sleep、數據交互、socket交互等等。

request_terminate_timeout = 0  即為不受時間控制,永不超時

request_terminate_timeout引起的資源問題

request_terminate_timeout的值如果設置為0或者過長的時間,可能會引起file_get_contents的資源問題。

如果file_get_contents請求的遠程資源如果反應過慢,file_get_contents就會一直卡在那里不會超時。我們知道php.ini 里面max_execution_time 可以設置 PHP 腳本的最大執行時間,但是,在 php-cgi(php-fpm) 中,該參數不會起效。真正能夠控制 PHP 腳本最大執行時間的是 php-fpm.conf 配置文件中的request_terminate_timeout參數。

request_terminate_timeout默認值為 0 秒,也就是說,PHP 腳本會一直執行下去。這樣,當所有的 php-cgi 進程都卡在 file_get_contents() 函數時,這臺 Nginx+PHP 的 WebServer 已經無法再處理新的 PHP 請求了,Nginx 將給用戶返回“502 Bad Gateway”。修改該參數,設置一個 PHP 腳本最大執行時間是必要的,但是,治標不治本。例如改成30s,如果發生 file_get_contents() 獲取網頁內容較慢的情況,這就意味著 150 個 php-cgi 進程,每秒鐘只能處理 5 個請求,WebServer 同樣很難避免”502 Bad Gateway”。解決辦法是request_terminate_timeout設置為10s或者一個合理的值,或者給file_get_contents加一個超時參數

如果常有請求超時,請打開php-fpm的慢日志,通過日志來確認評估超時時間。

Ngnix中的fastcgi 請求時間控制

fastcgi_connect_timeout

語法:fastcgi_connect_timeout time

默認值:fastcgi_connect_timeout 60

使用字段:http, server, location

指定同FastCGI服務器的連接超時時間,這個值不能超過75秒。

fastcgi_read_timeout

語法:fastcgi_read_timeout time

默認值:fastcgi_read_timeout 60

使用字段:http, server, location

前端FastCGI服務器的響應超時時間,如果有一些直到它們運行完才有輸出的長時間運行的FastCGI進程,或者在錯誤日志中出現前端服務器響應超時錯誤,可能需要調整這個值。

fastcgi_send_timeout

語法:fastcgi_send_timeout time

默認值:fastcgi_send_timeout 60

使用字段:http, server, location

指令為上游服務器設置等待一個FastCGI進程的傳送數據時間,如果有一些直到它們運行完才有輸出的長時間運行的FastCGI進程,那么可以修改這個值,如果你在上游服務器的error log里面發現一些超時錯誤,那么可以恰當的增加這個值。

指令指定請求服務器的超時時間,指完成了2次握手的連接,而不是完整的連接,如果在這期間客戶端沒有進行數據傳遞,那么服務器將關閉這個連接。

在Nginx+FastCGI 配置測試中

其中在request_terminate_timeout設置為永不超時的情況下,nginx中fastcgi_read_timeout 的設置時間將影響到最終的超時時間。

測試中,如果是php-fpm中的超時

將顯示 502 Bad Gateway

<html><head><title>502 Bad Gateway</title></head><body bgcolor="white"><center><h2>502 Bad Gateway</h2></center><hr><center>nginx</center></body></html>

如果是nginx中cgi配置超時

將顯示 504 Gateway Time-out

<html><head><title>504 Gateway Time-out</title></head><body bgcolor="white"><center><h2>504 Gateway Time-out</h2></center><hr><center>nginx</center></body></html>

到此,關于“Nginx與FastCGI哪個影響超時時間”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐石市| 长宁区| 云阳县| 晋江市| 齐河县| 辉县市| 清丰县| 桐庐县| 额尔古纳市| 巴楚县| 确山县| 通河县| 金堂县| 朝阳市| 宝兴县| 陈巴尔虎旗| 大竹县| 江孜县| 探索| 吴川市| 华宁县| 长春市| 昌乐县| 全南县| 安岳县| 宜章县| 中牟县| 南城县| 九台市| 突泉县| 屯门区| 墨脱县| 枣阳市| 宁晋县| 芷江| 温泉县| 安龙县| 新昌县| 砚山县| 县级市| 赣榆县|