Здравствуйте nginx-ru,
Стоит одна из последних версий nginx-а на FreeBSD 5.5-STABLE . При
обычной нагрузке в top-е nginx приблизительно такой:
last pid: 77484; load averages: 0.42, 0.80, 0.84
146 processes: 1 running, 145 sleeping
CPU states: 22.4% user, 0.0% nice, 10.6% system, 3.5% interrupt, 63.5% idle
Mem: 2793M Active, 796M Inact, 270M Wired, 130M Cache, 112M Buf, 20M Free
Swap: 6144M Total, 5536K Used, 6138M Free
PID PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND
...
40801 4 0 14640K 13176K kqread 2 65:33 1.76% 1.76% nginx
40805 4 0 14640K 13556K kqread 2 64:52 0.54% 0.54% nginx
40804 4 0 14640K 13560K kqread 0 64:28 0.29% 0.29% nginx
40802 4 0 14968K 13888K kqread 2 64:09 0.24% 0.24% nginx
40803 4 0 15296K 14108K kqread 2 65:00 0.15% 0.15% nginx
...
(на большой размер процесса не смотрите - там гео-база всю память
занимает)
Далее увеличиваем нагрузку на одном из виртуальных хостов nginx-а.
Начинаем _пятистам_ юзерам отдавать 50 файликов размером в несколько
байт, стучаться на получение новых файликов, получать 404 ошибку,
ждать секунду и стучаться за ними снова и так, пока нужный файлик не
появится на диске. Далее цикл повторяется. Файлки лежат на диске и
отдаются nginx-ом.
В результате top почти не меняется. В нёмного поднимается nginx, что
вполне ожидаемо. И всё нормально работает.
Через несколько минут наступает странная картина: те, процессы (mysqld
и httpd), которые раньше были в верху top-а и которые никак не связаны
с nginx-ом начинают кушать всё больше и больше процессора. Load
average поднимается до 10 и начинаются тормоза. При этом дисковая
активность, судя по iostat, не меняется после увеличения нагрузки.
Процессор также имеет 50-60% idle. Памяти вроде достаточно. Такое
ощущение, что не хватает какого-то другого ресурса, разделяемого
процессами и съеденного nginx-ом.
Вопрос - какого?
С уважением,
Михаил Монашёв, SoftSearch.ru
Member of Independent Software Developers Forum (ISDEF)
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://softsearch.ru/
Без бэкапа по жизни.