Apache 2.2 的internal dummy connection 問題

查看apache2的日誌,發現有大量
::1--[25/Dec/2009:13:07:51+0800]"GET/HTTP/1.0"302-"-""Apache/2.2.6(Unix)PHP/5.2.9(internaldummyconnection)"
查看Apache官方的說明如下:
"WhenApacheHTTPServermanagesitschildprocesses,itneedsawaytowakeupprocessesthatarelisteningfornewconnections.Todothis,itsendsasimpleHTTPrequestbacktoitself...Theserequestsareperfectlynormalandyoudonot,ingeneral,needtoworryaboutthem.Theycansimplybeignored.
原來是http的子進程的緣故,internaldummyconnection是因爲apache使用了prefork方式,若用worker則不會使用pop(pipeofdeath)在進程間通信,就不會出現internaldummyconnections了。
解決的方式:
1.減少它發生的機會(修改/etc/apache2/apach2.conf),找到IfModulempm_worker_module這一段:
StartServers15
MinSpareServers5
MaxSpareServers20
MaxClients150
MaxRequestsPerChild0
增加MaxSpareServers的數量(請依您server的連線狀況來做調整),這個可以減少它發生的機率。但是這個方法不可取,視服務器的配置而定,若太高服務器會down掉。
2.減少發生還是會發生,所以把這Request導到一個固定的網頁:
RewriteEngineon
RewriteCond%{HTTP_USER_AGENT}^.*internal/dummy/connection.*$[NC]
RewriteRule^/$/blank.html[L]
3.不要把這資訊寫到log裡:
SetEnvIfRemote_Addr"::1"dontlog
CustomLog/var/log/httpd/access.logcombinedenv=!dontlog
屏蔽"::1",可以過濾字符,不寫入log中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章