一個正常使用的網站,LAMP架構,突然打不開了,但是另外一個二級域名的網站,在同一台服務器上可以打開,靜態文件也可以打開,因為出故障前有段時間程序沒有更新,程序錯誤的可能性不大。
telnet 到網站的80端口,也可以打開,現像很奇怪。
重起了apache,沒用,mysql用命令行也可以使用,沒問題,一時沒了方向。
於是tail了apache的log,一個是正常的web log,一個是error_log。
觀察之後,發現了異常現象,apache的error_log一直輸出錯誤信息如下:
[Thu May 24 23:11:27 2007] [notice] child pid 23406 exit signal File size limit exceeded (25)
[Thu May 24 23:12:01 2007] [notice] child pid 23544 exit signal File size limit exceeded (25)
[Thu May 24 23:12:47 2007] [notice] child pid 23633 exit signal File size limit exceeded (25)
[Thu May 24 23:12:53 2007] [notice] child pid 22799 exit signal File size limit exceeded (25)
說有文件大小超過了限制。
google了一下,說是超過了apache 2G的文件限制,試用find命令在系統裡面查找超大的文件
查找到2個文件,一個是
/xxx/xxx/page_parse_time.log
/xxx/yyy/support-popbytes_log
第一個文件page_parse_time.log的大小在2G左右,壓縮備份後,
> /xxx/xxx/page_parse_time.log
,問題解決。
page_parse_time.log的文件內容是程序記錄sql query的log以及執行時間的log,每個頁面請求都會寫上一些數據,這麼超過2G也不奇怪了。
上次還遇到過一次mysql數據條數過多,的問題報錯信息如下:
LOGSQL Insert insert Failed : insert into adodb_logsql , sql0 , sql1 , params , tracer , timer ) ( created , sql0 , sql1 , params , tracer , timer ) values ( ,?,?,?,?,? ) NOW () ,?,?,?,?,? ) The table ' ' adodb_logsql ' is full
經查
select mysql > select * ) count ( * ) from adodb_logsql ;
+----------+
( * ) | | count ( * ) |
+----------+
| | 33127244 |
+----------+
3千萬,,,可能是有點大了,最後truncate了這個表,問題解決可是最後查mysql的文檔,關於Scalability and Limits部分沒有說mysql最多可以存多少條記錄,估計跟表的類型也相關。 原文說的是
Handles large databases. We use MySQL Server with databases that contain 50 million records. We also know of users who use MySQL Server with 60,000 tables and about 5,000,000,000 rows.
只是不知道它說的50 million是一個database裡面的所有記錄還是所有表的記錄加起來。 後邊的應該是所有60,000個表加起來的數據量。
————————
結論,必要的日誌是需要的,但是要控制大小,有循環機制,或者有監控機制,切記,切記。
Popularity: 32%