2013-09-23 3 views
0

У меня есть несколько HTTP-запросов, которые приводят к некоторому интенсивному использованию памяти (запуск приложения Django на Python с mod-wsgi). Моя проблема заключается в том, что эти процессы, похоже, некоторое время лежат без дела.Убейте простоя apache-процессов, если они потребляют слишком много памяти.

Есть ли способ сказать apache, чтобы убить простаивающий процесс, который поглотил X мегабайт памяти? Запрос уже успешно обработан.

ответ

0

Нет в данный момент. Однако вы можете делегировать определенные URL-адреса, которые имеют большое использование переходной памяти для отдельной группы процессов демона mod_wsgi, на которой установлен тайм-аут бездействия, так что если запросы для этого URL-адреса являются нечастыми, когда этот процесс не используется для в то время как он перезапустит процесс и вернет память. Если неактивное время достаточно долго для запуска таймаута бездействия, вы можете вместо этого использовать максимальные запросы и перерабатывать их так часто, исходя из количества запросов.

WSGIDaemonProcess main processes=3 threads=5 
WSGIDaemonProcess memory-hungry-1 threads=5 inactivity-timeout=60 
WSGIDaemonProcess memory-hungry-2 threads=5 maximum-requests=20 

WSGIProcessGroup main 
WSGIApplicationGroup %{GLOBAL} 

</Location /memory/hungry/url-1> 
WSGIProcessGroup memory-hungry-1 
</Location> 

</Location /memory/hungry/url-2> 
WSGIProcessGroup memory-hungry-2 
</Location> 

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

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