ПРОЕКТЫ 


  АРХИВ 


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]

Re: [apache-talk] mod_accel MC & MW




Добрый день!

>>>>Ситуация: [MC=1,MW=32,MP=P]. Медленный backend.
> 
>>В данной ситуации все запросы, которые выдает backend, кешируемы (и реально 
>>кешируются)... Стоит AccelDefaultExpire, backend ничего про кеширование не 
>>говорит. То есть так: "MISS/-/0/C 200/ADE/3600 10 3/2065/2065"
>>
>>То есть не учитывается MW, к сожалению, (что в принципе из фрагментов кода 
>>видно)... Но охотно верю, что что-то не понимаю, поскольку странно, что на 
>это 
>>до сих пор никто не наступил. :)
> 
> 
> MW в данном случае не работает, по-видимому, потому, что ждать нечего.
> То есть, при MC=1 можно ждать только один запрос - все остальные будут
> отвалиться c 503.
> 
> 
>>>2. Уменьшить число бэкендов и увеличить listen backlog в Апаче и ядре.
>>>Поставить MC=32. В этом случае буфером будет ядерная listen queue.
>>
>>Тут нужно, чтобы было MC=1 (условная ситуация, что backend не умеет хорошо 
>>обрабатывать несколько запросов одновременно :).
> 
> Ну так сделать всего один процесс рабочий бэкенда.

В принципе да, вариант... Чтобы они ждали в очереди на accept на backend. Мне 
просто казалось логичнее сделать это средствами mod_accel и думал что он это 
позволяет. :)

"MC и MW, позволяющие ограничить соответственно число соединений с бэкендом и 
число процессов, ждущих этот бэкенд в busy lock'е".

А на самом деле получается что MW это (если опять ничего не путаю :) число 
процессов, тоже ждущих ответы на те же запросы, которые сейчас обрабатывает 
backend...

То есть в приведенной ситуации если пустить запросы:

00:00 (1) page1.html - пошел запрос к backend на page1.html, connected=1
00:01 (2) page2.html - 503
00:02 (3) page3.html - 503
00:03 (4) page1.html - waiting=1
00:04 (5) page4.html - 503
...
00:10 (1) page1.html отдается из backend и кладется в cache
00:10 (4) page1.html отдается из cache.

Положение понятно, но мне кажется более логичным (и удобным) такое поведение:

00:00 (1) page1.html - пошел запрос к backend на page1.html, connected=1
00:01 (2) page2.html - waiting=1
00:02 (3) page3.html - waiting=2
00:03 (4) page1.html - waiting=3
00:04 (5) page4.html - waiting=4
...
00:10 (1) page1.html отдается из backend и кладется в cache
00:10 (4) page1.html отдается из cache.
00:10 (2) на backend отдается запрос к backend на page2.html
...

Хотя этого действительно можно добиться через очередь на accept, но ее размер в 
любом случае существенно ограничен, и да и перекомпилировать ради этого ядро 
кажется странным. Опять же если backend не apache, у него может не 
настраиваться 
аналог MaxClients. Ну да ладно... :)

WBR, MoKo



 




Copyright © Lexa Software, 1996-2009.