Есть сервер
CentOS release 5.4
ОЗУ 6ГБ
nginx-0.8.32 + nginx_mod_h264_streaming-2.2.7
Софтовый рейдmdadm -D /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Tue Dec 29 14:37:01 2009
Raid Level : raid5
Array Size : 11721117696 (11178.13 GiB 12002.42 GB)
Used Dev Size : 976759808 (931.51 GiB 1000.20 GB)
Raid Devices : 13
Total Devices : 14
Preferred Minor : 0
Persistence : Superblock is persistentUpdate Time : Tue Jan 19 16:53:13 2010
State : clean
Active Devices : 13
Working Devices : 14
Failed Devices : 0
Spare Devices : 1Layout : left-symmetric
Chunk Size : 256KUUID : 5bf1f5bf:c2887ccb:7e0b4288:7af24ae2
Events : 0.6Вечереом, при пиковой нагрузке, и траффике порядка 400-600 Mbps система не тянет.
И самое печальное, большой "CPU context switches" временами доходит до 80К - 120К в сек.Вот... и это только начало
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
47 4 36 11 0 2| 61M 3960k| 0 0 |3522B 2360B|9551 14k
88 5 0 4 0 2| 30M 824k| 762k 27M| 0 0 | 13k 44k
86 4 1 7 0 2| 39M 3560k| 713k 25M| 0 0 | 12k 41k
87 4 0 7 0 2| 32M 808k| 653k 23M| 0 0 | 12k 37k
86 4 0 8 0 2| 35M 0 | 616k 21M| 0 0 | 11k 36k
84 4 3 5 0 2| 26M 684k| 676k 24M| 0 0 | 12k 39k
85 4 3 6 0 2| 28M 0 | 698k 25M| 0 0 | 12k 42kПрошу подсказать, как побороть context switching?
[...]
>Вечереом, при пиковой нагрузке, и траффике порядка 400-600 Mbps система не тянет.
>
>И самое печальное, большой "CPU context switches" временами доходит до 80К -
>120К в сек.[...]
>Прошу подсказать, как побороть context switching?Не надо его бороть. Каждый context switch = прерывание (в том числе по таймеру), либо вызов I/O из user space. При 13 дисках в soft RAID и гигабитном Ethernet почти на пределе - вполне нормально, а для процессора старше PII - не особая нагрузка. Народ пишет, что PIII/1GHz легко тащит сотни тысяч.
Ищи другое узкое место.
Для начала можешь попробовать iperf с размером пакета = MTU (который у тебя 1500?). Получилось 750Mbps? Можешь дальше не искать. Jumbo Frames не помогут - раутеры по дороге к юзерам наверняка несогласные.
С помощью iptraf собери статистику по размеру пакетов. Что сможешь выжать из сети через iperf с размером пакета = среднему из iptraf?
dstat вроде бы показывает, что есть активный swap in/out. 3.5KB это за какое время? За секунду?
Что показывает iostat в колонке %util?
У меня не фря, и там нет iperf и iptraf :(
На этом рахделе XFS, и сначало было 2ГБ памяти, добил до 6ГБ - немного полегчало.iostat в колонке %util по этим дискам показывает 60-80 %% :(
Это при отдаче контента юзерам, а если качать один файл, то разгоняется почти до 600Mbps и при этом утилизация дисков в рамках 15%.
Отдача идёт через nginx, и вчера было порядка 700 Active connections из них 99% "Writing"CPU 2 шт. Intel(R) Xeon(R) CPU E5420 @ 2.50GHz
>У меня не фря, и там нет iperf и iptraf :(В .rpm и .deb они тоже есть, в соляре собери из исходников либо возьми с blastwave.org. Мастдай выкинь и поставь операционную систему.
>На этом рахделе XFS, и сначало было 2ГБ памяти, добил до 6ГБ
>- немного полегчало.
>
>iostat в колонке %util по этим дискам показывает 60-80 %% :(Итого - сетка забита под 80%, а то и больше, диск забит под 80%. Чем же ты недоволен? ;)
Посмотри в логах, что тянут - если сможешь добить памяти, чтобы верхние 5% активного контента влезло в кэш - снизишь нагрузку на диск в два раза.
>Это при отдаче контента юзерам, а если качать один файл, то разгоняется
>почти до 600Mbps и при этом утилизация дисков в рамках 15%.Эффективно работает кэш = не приходится гонять головы туда-сюда. Разнообразные параллельные чтения штука более тяжёлая.
>Отдача идёт через nginx, и вчера было порядка 700 Active connections из
>них 99% "Writing"Ну что же ты хотел? На каждого по мегабиту - вот и кончился твой гигабитный канал.
По фотографиям не меряйся - они маленькие, трафик на порядки меньше.
Да.. вот ещё. :)
На этом же серваке есть ещё один массив.
На нём хранятся фотки, и отдаются другим nginx'ом и без проблем.
Но всего на сервере получается 30.000К файлов :)
Вот с чего я спрашиваю про память. :)Raid Level : raid5
Array Size : 11721071616 (11178.09 GiB 12002.38 GB)
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Raid Devices : 7
Total Devices : 7
Preferred Minor : 1
Persistence : Superblock is persistentUpdate Time : Wed Jan 20 09:05:33 2010
State : active
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0Layout : left-symmetric
Chunk Size : 256K