Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Траблы с апач

1.9K
09 января 2007 года
kasap
168 / / 07.04.2005
Привет всем.

У меня возникли проблемы с апачем после увеличения посещаемости ресурса. Дело в том, что апач съедает всю память на сервере, в том числе весь свап в результате чего сервер умирает. Происходит это очень быстро - 4 гига опреративки + 4 гига свап сжираются буквально за считанные минуты. У меня стоят Linux, Apache 2 версии и PHP 5 установленный как модуль. Смотрел процессы - куча httpd каждая из которых отъедает от 30 до 50 Мб. Вариации с директивой в httpd.conf MaxRequestsPerChild ни к чему не привели. Читал, что если PHP установлен как модуль "пожирание" памяти случается, но рекомендуемое лечение (apache.child_terminate = 1 в php.ini и @apache_child_terminate в php скрипте) не помогли. Подскажите как с этим бороться? Не хотелось бы устанавливать php-cgi, так как сайт будет работать медленнее.

Очень прошу помочь.

Заранее спасибо.
2
09 января 2007 года
squirL
5.6K / / 13.08.2003
как ставился Apache? какой контент отдает апач?
1.9K
09 января 2007 года
kasap
168 / / 07.04.2005
Апач компилировался с одной директивой ./configure --enable-rewrite=/путь к модулям.
Апач отдает просто html код. Ничего сверхъестественного как говорится. Html генерируется через XSL в связке с PHP. Есть на сервере и скрипты работающие с изображениями. Но я не думаю что проблема в них.
13
09 января 2007 года
RussianSpy
3.0K / / 04.07.2006
Вообще конечно на мой взгляд диагноз поставить сложно
Надо знать название и версию ОС, версию точную РНР и Apache. Нужно знать с какими параметрами компилировался РНР и апач. И самое главное - знать что именно делают скрипты. Ибо если как вы говорите ничего особенно не меняли - таких траблов быть не должно

ЗЫ ИМХО для никсов лучше использовать апач ветки 1.3.х - как-то с ним проблем меньше по личному опыту.
25K
09 января 2007 года
medwooodu
1 / / 09.01.2007
посмотрите какие модули могут "ТЕЧЬ"(не чистить за собой память).
Какие никсы?
Точная версия апача и пхп?
на вскидку у вас образуются какие-то неубиваемые процессы, посмотрите, почему они зависают в стадии выполнения?
1.9K
09 января 2007 года
kasap
168 / / 07.04.2005
ОС Linux Fedora Core 4
Apache 2.2.3
PHP 5.1.4
13
09 января 2007 года
RussianSpy
3.0K / / 04.07.2006
modrewrite может теоритически жрать память если правила для него написаны через зад...
1.9K
09 января 2007 года
kasap
168 / / 07.04.2005
Вот как скомпилирован PHP.
'./configure' '--with-mysql' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-xsl=/usr' '--with-mssql=/usr/local' '--with-saprfc=/usr/local/lib' '--with-zlib=/usr' '--enable-track-vars' '--enable-trans-sid' '--with-jpeg=/usr' '--with-jpeg-dir=/usr/lib' '--with-png' '--with-gd' '--with-regex' '--with-unixODBC'

Про то как скомпилирован апач уже писал.
Правила для mod_rewrite написаны нормально. Затык в том, что апач плодит процессы. Если посмотреть на статистику запущенных им httpd то получается что активных несколько штук, а вот спящих (sleeping) около 200. Такое ощущение что апач резервирует их на всякий случай, но висят они напрасно и съедают память.
2
09 января 2007 года
squirL
5.6K / / 13.08.2003
попробуй для начала поставить родной rpm для apache & php, собранный специально для федоры. это раз. сборка из сырцов - чревата.

во-вторых - возможно, стоит раздавать картинки и прочую статику НЕ апачем?

кстати, кто рекомендовал вам использовать apache.child_terminate?
300
09 января 2007 года
ReDrum
689 / / 20.04.2000
Хехе, внесу свои пять копеек.
Допустим, у нас есть скрипт который работает и отедает некоторое кол-во памяти. И у нас есть пользователь на медленном канале. Пользователь заходит на сайт, кликает, у тебя отрабатывает апач, пхп и наверняка mysql. Это я к тому что пока пользователь не получит страницу апачевый потомок не освободит память пока скрипт не закончит свою работу.
Теперь, у тебя пара пользователей на медленном канале одновременно зашли, отъелось в 2 раза памяти, 10 юзеров - в 10 раз, все до тех пор хорошо пока железо тянет. Но наступает момент, как у тебя, он называется Spiral Down, когда железо несправляется на пиках.
Ну и пхп, не знаю как сейчас, но было такое что если он собран как апачевый модуль, он все равно считывает каждый раз скрипты с диска и не работает с кешем.
Вариан простой - нужно воткнуть прокси, т.е. сделать связку
юзер -> proxy -> рабочий апач (php)
юзер <- proxy <- рабочий апач (php)
для того что бы твои пхп апачи не ждали пока юзер все примет, а отдавали сгенерированный текст проксе.
1.9K
10 января 2007 года
kasap
168 / / 07.04.2005
Спасибо всем. Проблему решил вроде после того, как посидел за мануалом к апачу.

GracefulShutdownTimeout

Директива убивает httpd независимо от того закончилась транзакция или нет. Установил значение равное 20. Думаю, это достаточно. Не знаю правда, что с теми у кого канал плохой. Пока не жаловались, значит все ОК. ;)
2
10 января 2007 года
squirL
5.6K / / 13.08.2003
не думаю, что это умное решение. правильное решение - проверить нормальность работы ваших скриптов и если все нормально - ставить прокси
1.9K
11 января 2007 года
kasap
168 / / 07.04.2005
Абсолютно согласен - это не нормальное решение, но на первое время, пока не найду, где грабли, сойдет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог