1. 程式人生 > >一個和worker_connections引數相關的Nginx系統問題及解決辦法

一個和worker_connections引數相關的Nginx系統問題及解決辦法

1. 問題現象 
nginx執行過程中,發現無法訪問nginx(導致nagios監控告警) ,且error日誌中一直報如下錯誤 

2011/05/10 16:31:07 [alert] 24082#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 
2011/05/10 16:31:07 [alert] 24082#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 
2011/05/10 16:31:07 [alert] 24085#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 

2011/05/10 16:31:07 [alert] 24082#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 
2011/05/10 16:31:07 [alert] 24085#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 
2011/05/10 16:31:08 [alert] 24082#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 

2011/05/10 16:31:08 [alert] 24082#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 
2011/05/10 16:31:08 [alert] 24085#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 
2011/05/10 16:31:08 [alert] 24082#0: 1024 worker_connections is not enough while accepting new connection on 0.0.0.0:81 


2.初步原因分析 
目前nginx 中worker_connections 值設定是1024,worker_processes 值設定是4,按反向代理模式下最大連線數的理論計算公式: 
最大連線數 = worker_processes * worker_connections/4
算出目前每臺nginx理論上只支援1024個。但觀察NGINX 歷史性能資料,發現活動連線數經常是大於1024,並且最高達到5000左右,因而有時會導致連線數不夠,直到NGINX無法再處理新的連線請求。 
3.解決辦法 
檢視相關資料,生產環境中worker_connections 建議值最好超過9000,計劃將一臺nginx 設定為10240,再觀察一段時間。