亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

老河口市| 根河市| 吕梁市| 阿勒泰市| 响水县| 南澳县| 望江县| 章丘市| 康定县| 江达县| 耒阳市| 泰安市| 乌恰县| 宁乡县| 深水埗区| 高要市| 宿迁市| 罗田县| 根河市| 江陵县| 双江| 东丽区| 临海市| 崇州市| 正宁县| 巴彦淖尔市| 平乐县| 稷山县| 新绛县| 桦川县| 荥阳市| 汝州市| 会昌县| 黑河市| 河西区| 临沧市| 临高县| 兴业县| 赤峰市| 桓仁| 梓潼县|