2015年7月30日 星期四

Apache服務器間歇性假死報錯重啟後正常的故障解決思路

windows環境下的可能的原因分析及解決方法:

一:pf只漲不降,直到使用極限,最終導致內存泄漏。
(內存泄漏也稱作“存儲滲漏”,用動態存儲分配函數動態開辟的空間,在使用完畢後未釋放,結果導致一直占據該內存單元。直到程序結束。(其實說白了就是該內存空間使用完畢之後未回收)即所謂內存泄漏。)

解決思路:




方法A:編輯httpd.conf

加入

ThreadsPerChild 1000
MaxRequestsPerChild 10000
Win32DisableAcceptEx

方法B:

先取消httpd.conf文件中“# Include conf/extra/httpd-mpm.conf”行的註釋;

(這是為了能夠啟動httpd.conf文件時引用httpd-mpm.conf文件的配置。)

 然後修改httpd-mpm.conf文件中以下部分的值產生作用,開始推薦1000、10000。如上顯示

二:端口暫用沖突導致

解決思路:
嘗試在httpd.conf配置文件查找 Lsiten 80,改成別的端口,可以改特殊一點,
肯定不會用到的;

三:SSLSessionCache 錯誤

解決思路:
打開日志: C:\webserver\Apache24\logs\error.log,可以看到很多錯誤,其中有這樣一條:

1
[Fri Nov 16 15:53:22.390625 2012] [ssl:warn] [pid 7344:tid 1720] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache] 貌似說 SSLSessionCache配置有點問題,於是乎檢查下
1
C:\webserver\Apache24\bin>httpd.exe -t
2
AH00526: Syntax error on line 76 of C:/webserver/Apache24/conf/extra/httpd-ssl.conf:
3
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?). 看出來了,本指令需要shmcb支持(俺也不清楚是個啥,總之是要支持就對了),於是,翻開httpd.conf,找到如下一行
1
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 把前面的#去,然後看看語法檢查情況:
1
C:\webserver\Apache24\bin>httpd.exe -t
2
Syntax OK


四:zend關聯錯誤

解決思路:
zend 關了,具體做法是,打開php.ini,把以下兩行註釋掉,問題終於解決.....  [zend]zend_extension="D:\php\ext\ZendOptimizer.dll" 這樣APACHE終於可以運行正常了。

沒有留言:

張貼留言