2012-03-13 2 views
1

У меня проблема со многими сценами спящего режима на apache. Пока я запускаю apache и очищаю память в кэше до 13 ГБ, тогда свободная память все еще падает до ap. 100MB бесплатно. Многие php-процессы засыпают и сохраняют кэшированную память ap. 19 МБ на один скрипт.Проблемы с памятью Apache

Иногда сценарий сна хранит даже 700 МБ из памяти. Есть ли какие-то настройки, как сказать apache, когда конец скрипта, а затем завершить процесс?

+0

Свободной памяти (как сообщают 'free') не используется и потеряли память. ядро использует ОЗУ, например, для кеширования файловой системы ... –

+0

Проблема в том, что спящий режим ssis все еще растет, ap. 1/60s и при свободной памяти до 100 МБ, тогда система будет меняться с диска, даже если реально неиспользованной памяти много. – user1173536

+0

php не подходит для долгоживущих приложений, но это возможно. Таким образом, это больше проблема с некоторым кодом, испускающим утечку памяти. Тем не менее, Apache/php должен освобождать всю используемую память, когда скрипт заканчивается. – kirilloid

ответ

0

Нет ваша проблема не «с много SLEEPS скриптов на апаш», является то, что вы используют спит сценарии на апача. Сон - это анафема для большинства веб-серверов, которые разработаны с учетом одной цели: получать и отвечать на веб-запросы, основанные на отсутствии на основе HTTP (S).

Спящий, по себе, не является абсолютным злом, но если общая задержка более чем на несколько секунд, после чего вы делаете что-то очень неправильно, и вы должны изучить альтернативные подходы.

Например, phpBB реализует функцию типа псевдо-cron, в которой веб-запросы планируют будущие рабочие действия (например, для обслуживания таблиц, связанных с приложениями, каждый час, скажем), используя таблицу с запросом на запрос и общую функцию проверки. Если запланированная задача связана с тем, что однопиксельный запрос изображения используется для генерации асинхронного обратного вызова к действию. (Поступая в загрузку изображения этот запрос отсоединяется от URI, который, кстати вызвал его.

Другой подход представляет собой вариант, который использует независимый демон или хрон обслуживание в порядке очереди по мере запроса таблицы.

Другой подход просто выполнить дочерний процесс, который затем вилы daemonise себя и отделить от рабочего процесса Apache.

и другой подход ...

1

Ресурс и временные рамки PHP, работающие в Apache, контролируются php.ini
Эти две настройки объясняются сами собой.

max_execution_time = 30 
memory_limit = 128M 

Поэтому я не думаю, что сценарий будет спать вечно и исчерпать вашу память.
Сначала проверьте эти настройки.

+0

У меня есть memory_limit, установленный на 2048, потому что многие скрипты выполняют жесткую операцию и max_execution_time для 1000000, потому что многие сценарии работают долгое время, некоторые навсегда. – user1173536

+2

Тогда php, запущенный apache, не соответствует вашим потребностям. Вы должны рассмотреть другой подход. – Magic

Смежные вопросы