查看apache日志,發(fā)覺(jué)是mod_fcgid模塊異常,提示"Connection reset by peer:mod_fcgid:error reading data from FastCGI server"、"Premature end of script headers:index.php"、"process /usr/... apache/cgi-bin exit(communication error, get unexpected signal 7",說(shuō)白了就是php提前終止執(zhí)行,沒(méi)有返回header就退出。
我依據(jù)這些錯(cuò)誤在網(wǎng)上搜索了很久,始終沒(méi)有找到滿意答案,甚至還被人誤導(dǎo),以為mod_fcgid模塊配置的問(wèn)題。
在沒(méi)有找到解決方法之前,我一直在想,php最近雖然慢了點(diǎn),但至少能運(yùn)行,說(shuō)明配置是沒(méi)有問(wèn)題;而且,如果現(xiàn)在執(zhí)行phpinfo(),程序依然能夠執(zhí)行。我再次梳理出錯(cuò)規(guī)律,發(fā)覺(jué)include多的mvc框架就會(huì)提示500內(nèi)部錯(cuò)誤。其它簡(jiǎn)單的程序就能夠運(yùn)行。這說(shuō)明什么?!說(shuō)明php已經(jīng)不能include文件了,為什么?只能是請(qǐng)求這些資源時(shí)動(dòng)了臨時(shí)文件,而臨時(shí)文件沒(méi)有多余空間了。
運(yùn)行
1
|
df -h |
發(fā)覺(jué)果然如此
1
2
3
|
Filesystem Size Used Avail Use% Mounted on /dev/sda1 6.8G 6.5G 17M 100% / ... |
系統(tǒng)主目錄/下已經(jīng)爆掉了。
于是,查找大文件
1
|
find / - type f -size +300M |
發(fā)覺(jué)php插件Xdebug產(chǎn)生了很多性能分析文件,而且都是以100M記。
1
2
3
|
/tmp/profiler/cachegrind.out. 1336 /tmp/profiler/cachegrind.out. 1329 .... |
于是修改php.ini,將分析文件存放在其它地方,或者干脆不保存。
1
2
|
# close xdebug profiler in php.ini xdebug.profiler_enable = off |
再刪除xdebug性能分析目錄和php var跟蹤目錄
1
2
|
rm -rf /tmp/profilter rm -rf /tmp/trace |
再次查看硬盤情況,發(fā)覺(jué)已使用為26%,剩余4.9G。
1
2
3
|
Filesystem Size Used Avail Use% Mounted on /dev/sda1 6.8G 1.7G 4.9M 26% / ... |
甚至不用重啟httpd服務(wù)器,刷新web,又正常運(yùn)行了!!!
為免除后患,我們需要安裝一個(gè)定時(shí)清理軟件--tmpwatch,設(shè)置/etc/cron.daily/tmpwatch配置里面的定時(shí)時(shí)間
1
|
usr /sbin/tmpwatch "$flags" 30d /var/tmp |
改為7d(必須以天為單位)
1
|
usr /sbin/tmpwatch "$flags" 7d /var/tmp |
一個(gè)星期定時(shí)清理一次。