nginx的幾個錯誤解決方法

2021-07-26 11:17:45 字數 1490 閱讀 7952

今年春節,注定是這麼多年最讓我難忘的乙個!因為我半夜還在維護伺服器!公司有一定的基礎使用者量,春節期間使用者量暴增,導致伺服器鴨梨山大報警了!沒辦法,這些都是應該經歷的。下面就總結一下nginx的一些問題,希望以後不要再犯同樣的錯誤。

官方解釋:

ngx_null_string, /* 499, client has closed connection */499,客戶端關閉連線,這個狀態碼並不是http協議中定義的status code,而是nginx自己定義的乙個狀態碼。由於伺服器處理請求較多,客戶端在有效時間內沒有得到答覆,主動關閉了連線。有人說把時間設定長一些或者使用proxy_ignore_client_abort on(讓**服務端不要主動關閉客戶端的連線)。但是這樣也有一定的風險,會拖垮伺服器。發生這個錯誤,如果伺服器cpu和記憶體不算太高,一般是資料庫和程式的問題,資料庫處理較慢或者程式執行緒較低。結合情況調整,比如讀寫分離或者程式執行緒數調高。

程式執行太久而被終止,在**處新增fail_timeout和max_fails,加在**服務的後面。這2個引數一起配合,來控制nginx怎樣認為upstream中的某個server是失效的。當在fail_timeout的時間內,某個server連線失敗了max_fails次,則nginx會認為該server不工作了。同時,在接下來的 fail_timeout時間內,nginx不再將請求分發給失效的server。如果不設定這2個引數,fail_timeout預設為10s,max_fails預設為1。就是說,只要某個server失效一次,則在接下來的10s內,就不會分發請求到該server上。為了避免因為意外原因導致的錯誤判斷,所以要根據實際併發情況填寫合理的值。max_fails=0則表示不做判斷,即使有多次失敗請求,後面的請求也會繼續發給它處理。

開啟檔案數太多,受到限制。ulimit -n,檢視linux可開啟檔案總數。解決這個問題,把worker_rlimit_nofile和worker_connections設定高一些就好了。worker_rlimit_nofile 更改worker程序的最大開啟檔案數限制,worker_connections 設定可由乙個worker程序同時開啟的最大連線數。最大客戶數也由系統的可用socket連線數限制(~ 64k),所以設定不切實際的高沒什麼好處。注意worker_connections不要超過worker_rlimit_nofile。

錯誤解決方法

一 1 錯誤 parsererror error tokenizing data.c error expected 2 fields in line 2,saw 10 2 sep none 3 error bad lines false 雖然讀取成功了,但是會刪掉很多列 實驗後,發現以上三種引數方法...

matlab mex setup錯誤解決方法

在做專案時,需要利用matlab來呼叫c 程式介面,並且將資料傳過來,折騰幾天,分享出來,互相幫助。眾所周知,matlab是基於c 的科學計算軟體,因此必然是可以與c 混合程式設計的,其中用到了mex 安裝是非常坑的,事實上網上,論壇上講的非常複雜,嘗試了很多種方法都不成功 自帶踩坑體質 這裡給出我...

Zend Studio 執行錯誤解決方法

錯誤現象 選擇專案後,執行時彈出如下錯誤 分析原因 根據彈出的提示,確定是由於執行單元選擇錯誤,應該從選擇單元入手解決 在選單中開啟 run run as 中只有乙個選擇 phpunit test 開啟 run run 發現可以配置好幾個選項可以選擇,我們需要的那個選擇是 php web page,...