ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] =?koi8-r?B?UmU6IG1vZF9hY2NlbCArINfJ0tQuINPF0tfF0sEgzsEgxtLPztTFzg==?==?koi8-r?B?xMUgKyDLz87Gyccgz8TJziDOwSDX08XIPw==?=



Добрый день, всем! :)

> > > Мне уже Игорь отвечал здесь, что необходимо в моей ситуации ставить
флаг
> > > MP=H
> > >
> > > Вчера поставид этот флаг
> > >
> > > AccelPass      /       http://127.0.0.1/       [PH,MC=75,MW=200,MP=H]
> > >
> > > Перезапустил фронтенд даже с остановкой и запуском. Но ночью опять на
> > > бекенде была ошибка:
> > > "server reached MaxClients setting ..."
> > >
> > > На бекенде стоит:
> > >
> > > MaxClients 160
> > >
> > > то есть несмотря на ограничение в 75 соединений, у меня было
фронтендом
> > > сделано более 160... Вся остальая конфигурация описана ниже.
> >
> > Научные исследования показали, что флаг MP вместе с PH работает
неправильно,
> > но ограничивать соединения в данном случае должен. Будем исправлять.
> >
> > Почему же мы не видим ограничения в данном случае ? Я подозреваю
последнюю
> > число 35 в AccelBusyLock. Дело в том, что по истечении этого времени
> > mod_accel закрывает соединение к бэкенду и возвращает ошибку 503.
> > Бэкенд узнает о том, что ему закрыли соединение только после того, как
> > попробует почитать из него или записать в него, что видимо когда-то
случается,
> > но не слишком скоро.
> >
> > Рекомендуется попробовать следущее:
> >
> > AccelPass      /       http://127.0.0.1/       [PH,MC=75,MW=200,MP=H]
> > AccelBusyLock  25 30 6000
>
> Короче, всё, что я нагнал выше, проблему не решит.
> Максимальное время ожидания в бизилоке увеличить не помешает,
> но прежде всего нужно увеличить AccelTimeout минут до 10.

Сделал я правки конфига, но AccelTimeout поставил не в 10 минут пока, а в 70
секунд (просто в доке написано что более 75 секунд смысла ставить не имеет).
У меня очень большие сомнения, что мои скрипты задерживаются на такое время.
То есть итоговая конфигурация получилась такой:

<IfModule mod_accel.c>
 AccelBkRcvBuffSize 100
 AccelCacheRoot proxy 1 1 noauto
 AccelPass      /       http://127.0.0.1/       [PH,MC=75,MW=300,MP=H]
 AccelSetXRealIP on
 AccelPassCookie on
 AccelMaxStale 40
 AccelTimeout 70
 AccelBusyLock  25 30 60
 AccelDefaultExpire "24 hours"
</IfModule>

И далее два виртуала, тока с отличием тем, что у одного логи пишутся, у
другого нет.

<VirtualHost xx.xx.xx.xx:*>
ServerName www.domain1.com
...
</VirtualHost>


<VirtualHost xx.xx.xx.xx:*>
ServerName www.domain2.com
SelverAlias *
...
</VirtualHost>

Но опять наступил момент, когда MaxClients настигло 160. Причем в норме
обычно при большой загрузке 7-10 бекендов, но вдруг наступает момент за 1-2
минуты, когда их становится 160 и наступает лимит MaxClients... В это время
сервак 10 минут колошматит (бекенд медленно снижается до 50 бекендов за 10
минут) и все работает дальше. Я подозреваю, что виноваты мои скрипты, и что
в них происходят задержки с базой MySQL (локировок там нет), но пока яных
ошибок не нашел.

Очень важная думаю деталь.
В момент такого пика вот как развивались события:
Sat Jun 22 09:40:01 MSD 2002
amount apache_new:      11
amount mysqld:      56
amount accel:     997

Sat Jun 22 09:42:01 MSD 2002
amount apache_new:     148
amount mysqld:     242
amount accel:     935

Sat Jun 22 09:44:04 MSD 2002
amount apache_new:     160
amount mysqld:     285
amount accel:     881

Эти вещи зафиксировал мой скрипт. Что очень странно - резко возросло
количество бекенд-процессов, но почти неизменным и даже уменьшилось кол-во
фронтендов. Я говорю это к тому, что у меня стоит MW=300, то есть в такой
ситуации по идее должно фронтендов быть на 300 как минимум больше. Однако
этого нет. Поэтому у меня есть сомнения, что BusyLock-и не ограничивают как
надо в данном конфиге.

То есть проблема осталась. Я очень склоняюсь к тому, что виноваты мои
скрипты, но что-то мне подсказывает, что и фронтенд не очень то и
ограничивает бекенд 75-ю соединениями. Но это мои догадки пока что...

У меня
Linux version 2.4.9-31 (bhcompile@daffy.perf.redhat.com) (gcc version 2.96
20000731 (Red Hat Linux 7.1 2.96-98)) #1 Tue Feb 26 07:11:02 EST 2002
1Gb RAB, IDE HDD

Бекенд:
Apache/1.3.23 (Unix) PHP/4.2.1 mod_layout/3.0.3 mod_perl/1.26 rus/PL30.11

Фронтенд:
Apache/1.3.23 (Unix) mod_deflate/1.0.12 mod_accel/1.0.19

Также, когда делаю тесты к бекенду в момент когда загрузка сервера близка к
той, что сбоит, через telnet:
telnet localhost 80
HEAD / HTTP/1.0
Host: www.domain1.com

То время отклика обычно 1-2 секунды. Все запросы одинаковы, локировок в базу
нет. То есть пока даже не знаю, где проблема - то ли обвал происходит от
того, что фронтенд не ограничивает, то ли скрипты у меня.

>
> Игорь Сысоев
> http://sysoev.ru
>

Алексей

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.