Re: fastcgi_cache в nginx
Maxim Dounin
mdounin на mdounin.ru
Сб Мар 20 22:15:57 MSK 2010
Hello!
On Sat, Mar 20, 2010 at 06:41:10PM +0200, Alex Vasilenko wrote:
[...]
> Все верно - load avg это количество процессов, которые стоят в очереди на
> выполнение. Неужели 30 рандомных запросов это много для диска?
30 запросов к диску - это не много, типичный SATA диск легко
выдаёт 100 операций случайного чтения в секунду. Но один запрос к
nginx'у - это обычно больше одного запроса к диску.
Ну и диски опять же бывают разные.
> Софтварных вариантов оптимизации я вижу 2:
>
> 1. перейти на фс, оптимизированную для мелких файлов, например reiserfs.
> 2. подтюнить параметры ядра.
>
> 1. Что скажете про переход на reiserfs? У кого-нибудь есть опыт работы с ним
> в связке с nginx cache?
> 2. Тут я в полном неведении. Кроме очевидного noatime. Подскажите, куда хоть
> смотреть.
AFAIK, в первую очередь в линуксе нужно тюнить io scheduler
(всмысле - поставить правильный). Но про линукс тут вообще мало
специалистов, и я к ним точно не отношусь.
В nginx'е в зависимости от среднего размера ответа - скорее всего имеет
смысл поднять output_buffers и отключить sendfile. Это позволит
несколько снизить нагрузку на диск за счёт чтения большими
блоками.
[...]
> > В случае большого количества worker'ов это также может быть lock
> > contention (симптом - воркеры жрут 100% CPU, видно в top'е,
> > наблюдалось если мне не изменяет память на 30 или около того).
> > Лечить уменьшением количества воркеров до разумного.
>
> Спасибо, помогло. Правда симптомов, вами указанных не было. Уменьшил
> количество воркеров с 64 до 20 (4х ядерный сервер), load avg теперь не так
> скачет.
> Дальнейшее тестирование покажет.
Если 100% CPU не было - то и lock contention не было. А то что
load avg при уменьшении количества воркеров скакать стал меньше -
это естественное следствие, ибо процессов стало меньше. Вопрос в
первую очередь как изменилось среднее время ответа на запрос.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru