Есть некий сервер на VPS. Стоит на нем CentOS release 5.4. Поднят Apache и на нем некий сайт на joomla и форум - phpbb3. Неожиданно, при заходе на форум, посыпались ошибки вида:
Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)...
После гугления была найдена тема, где предлагалось увеличить размер memory_limit в php.ini. Установили в 512Мб. Но это не помогло - ошибки продолжали сыпаться. Стали исследовать дальше. Выяснилось что сам сервер страдает от недостатка памяти. После выполнения grep -r memory /var/log было найдено следующее:
Код: Выделить всё
/var/log/httpd/error_log.2:[Thu Sep 16 22:34:22 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.2:[Thu Sep 16 22:34:32 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.2:[Thu Sep 16 22:34:42 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:20:59 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:21:09 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:Out of memory (Needed 84000 bytes)
/var/log/httpd/error_log.1:[Tue Sep 21 17:21:19 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:Out of memory
/var/log/httpd/error_log.1:[Tue Sep 21 17:21:29 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:21:39 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:21:49 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:Out of memory (Needed 84000 bytes)
/var/log/httpd/error_log.1:[Tue Sep 21 17:21:59 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:22:09 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:22:19 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:22:29 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:22:39 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:22:49 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:22:59 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:23:09 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Tue Sep 21 17:23:19 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:42:49 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:Out of memory
/var/log/httpd/error_log.1:Out of memory
/var/log/httpd/error_log.1:[Wed Sep 22 18:42:59 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:43:09 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:43:19 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:43:29 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:43:39 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:43:49 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:43:59 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:44:09 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:44:19 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:44:29 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:44:39 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:44:49 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:44:59 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:45:09 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:45:26 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 18:45:36 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:51:16 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:51:26 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:51:36 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:51:46 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:51:56 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:52:06 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:52:16 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:52:26 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:52:36 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:52:46 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:52:56 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:53:06 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:53:16 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 20:53:26 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 21:04:18 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:Out of memory (Needed 10576 bytes)
/var/log/httpd/error_log.1:[Wed Sep 22 21:11:37 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 21:14:00 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 21:14:10 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 21:14:20 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/httpd/error_log.1:[Wed Sep 22 21:14:30 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
/var/log/exim/mainlog.1:2010-09-21 17:22:27 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/mainlog.1:2010-09-22 18:42:52 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/mainlog.1:2010-09-22 18:43:45 daemon: fork of queue-runner process failed: Cannot allocate memory
/var/log/exim/mainlog.1:2010-09-22 18:43:58 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/mainlog.1:2010-09-22 18:45:04 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/paniclog.1:2010-09-21 17:22:27 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/paniclog.1:2010-09-22 18:42:52 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/paniclog.1:2010-09-22 18:43:45 daemon: fork of queue-runner process failed: Cannot allocate memory
/var/log/exim/paniclog.1:2010-09-22 18:43:58 daemon: accept process fork failed: Cannot allocate memory
/var/log/exim/paniclog.1:2010-09-22 18:45:04 daemon: accept process fork failed: Cannot allocate memory
Т е видно что памяти не хватает не только Апачу, но и иным приложениям.( в отдельные моменты среди таких ошибок проскакивало даже sshd)
На сервере установлено 768Мб.
Собственно вопрос - как определить что именно пожирает память. Догадываюсь, что Apache, но как узнать на чем он ее так кушает и как бы его аппетит ограничить. Пожалуйста, не предлагайте сидеть с top и наблюдать - такая ситуация случается не очень часто(но периодично).
Всем спасибо за внимание!