昨天晚上收到監視團隊的**,說web伺服器連不上。(作為dba,這貌似超出了我的工作範疇啊...)
於是馬上vpn連上伺服器,發現網路負載均衡下的兩台apache伺服器都沒有響應,而伺服器os層面上正常。 大概十來分鐘後自動恢復正常。
通過檢查apache的錯誤日誌,兩台伺服器都發現了類似如下的錯誤,而且錯誤發生的時間幾乎是同時。
[thu sep 18 20:46:13 2014] [warn] server ran out of threads to serve requests. consider raising the threadsperchild setting
[thu sep 18 20:50:54 2014] [warn] (os 64)指定的網路名不再可用。 : winnt_accept: asynchronous acceptex failed.
[thu sep 18 20:50:54 2014] [warn] (os 64)指定的網路名不再可用。 : winnt_accept: asynchronous acceptex failed.
[thu sep 18 20:50:54 2014] [warn] (os 64)指定的網路名不再可用。 : winnt_accept: asynchronous acceptex failed.
原來是向apache伺服器請求的request已經超過了所設定的同時連線數。
檢查後發現我們的兩台apache伺服器除了有個lb設定,其它都是預設的......
於是,我修改了如下配置:
修改d:\webserver\conf\extra\httpd-mpm.conf檔案
threadsperchild 512
maxrequestsperchild 5000
修改d:\webserver\conf\httpd.conf檔案,將下面的注釋#解除。
同時,為了能監視目前的連線數,進行了如下設定修改:
修改d:\webserver\conf\httpd.conf檔案,將下面的注釋#解除。
修改d:\webserver\conf\extra\httpd-info.conf檔案,增加如下內容:
sethandler server-status
order deny,allow
deny from nothing
allow from all
這樣,通過 web伺服器ip/c-server-status 可以監視apache目前的狀態。
關閉/啟動apache伺服器,打完收工。
下面是通過zabbix監視apache的設定例子:
nginx與apache 限制ip連線數和頻寬方法
今天有個人問我,nginx怎麼限制ip連線數,突然想不起來了,年齡大了,腦子不怎麼好使了。還要看一下配置才想起了。那個人又問我,你測試過的嗎?一下子把我問蒙了,我真沒測試過了,也不知道啟作用了沒有。1,配置nginx.conf 如下 複製 2,測試限制ip連線數 如下 複製 benchmarking...
Apache 連線數優化
可見的mpm配置在 usr local httpd conf extra httpd mpm.conf 當前httpd的工作模式檢視 mod so.c有prefork,故當前httpd應該是工作在prefork模式.prefork模式的預設配置是 startservers 5 minspareser...
檢視Apache的連線數和當前連線數
檢視了連線數和當前的連線數 複製 如下 netstat ant grep ip 80 wc l netstat ant grep ip 80 grep est wc l檢視ip訪問次數 複製 如下 netstat nat grep 80 awk awk f sort uniq c sort nlin...