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
|