Мы часто выходим из памяти, так как fork не может выделить память. Я провел некоторое расследование.
Кажется, что сценарии не так, как я думал до этого. Я поделюсь информацией, которую получу после анализа.
У меня есть изолированный сервер, поэтому другие люди не могут добраться до сервера. Это покажет "истинное" использование памяти в этом случае.
- У меня нет mysqld и apache запущен [использование памяти ~ 182mb].
- только что начал mysqld. нет никаких соединений с mysqld [mu ~ 340mb].
- httpd запущен [~ 360mb].
- первый запрос к скрипту. [~ 630mb]. Но!! Самая интересная часть. Память не освобождается. Все выглядит хорошо. Сценарий завершен, страница загружена успешно. Но это все еще около ~ 630mb.
Почему один запрос кушает 270Мб? Почему тот не освобождается после запроса?
Некоторые характеристики:
- Оперативная память сервера 512 МБ гарантировано
- 256 мегабайт
- Ограничение памяти PHP: 256 МБ
httpd.conf
<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 3
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 50
</IfModule>