mkc Posted August 3, 2011 Posted August 3, 2011 Доброго времени суток! Проблема следующая, сервер вещает IPTV юникастом по следующей схеме - 3 сетевые карты, в первую приходит только мультикаст от контент-провайдера, вторая смотрит на ядро с серым IP для локалки, третья во вне для стороннего проекта. на машине крутится UDPXY который преобразует мультикаст в http и отдает на локалхост, далее на внешку ( на карту 2 и 3 ) отвечает nginx ( 1.0.5 ) - он преобразует ссылки и работает мультиплексом для уменьшения нагрузки на UDPXY который не расчитан на мои нагрузки ( в прайме - от 400 листенеров ). Железо - Intel® Core™ i7 CPU 930 @ 2.80GHz, 12Gb RAM, карты Intel Corporation 82572EI Gigabit Ethernet Controller Проблема такая - в прайме при 300-320 листенерах загрузка процов 8-12%%, память - 3.4-3.7Gb, поток на отдачу - под полкой - но проблема не в этом - система тормозит жутко и картинка у пользователей постоянно стопарится даже в локалке, где поток с интерфейса не более 300 мегабит. Выяснил, что завышены показатели CS в vmstat - доходит до 51-52к : Низкий нагруз ( 60 листенеров ): [root@tv ~]# vmstat 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 10168064 102668 1326268 0 0 26 268 1761 3276 1 3 95 0 0 0 0 0 10142048 102684 1348812 0 0 0 2158 18256 37649 1 5 93 0 0 0 0 0 10115752 102692 1371388 0 0 0 4602 18082 38208 1 5 94 0 0 0 0 0 10175164 102704 1311244 0 0 0 5850 18048 38735 1 5 93 0 0 1 0 0 10318692 102720 1164820 0 0 0 3976 18906 39721 1 5 93 0 0 2 0 0 10302084 102728 1179200 0 0 0 5780 18426 39005 1 5 93 0 0 0 0 0 10279896 102736 1198264 0 0 0 1961 17894 37812 1 5 94 0 0 ^C [root@tv ~]# ps ax | grep udpxy | wc -l 60 [root@tv ~]# Нагруз повыше ( 110 листенеров ): [root@tv ~]# ps ax | grep udpxy | wc -l 110 [root@tv ~]# vmstat 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 3 0 212364 83676 10266064 0 0 16 1460 104 1423 2 9 87 2 0 1 2 0 202164 83680 10350208 0 0 666 28082 22010 64084 2 9 82 7 0 0 0 0 157392 83668 10407648 0 0 564 17350 22036 63558 2 9 84 5 0 7 0 0 442756 83668 10113704 0 0 327 43397 20229 62714 2 8 74 16 0 2 2 0 295504 83668 10244548 0 0 638 25410 22211 62403 3 9 87 2 0 1 0 0 568336 83676 9985872 0 0 476 14016 21622 63809 3 9 85 3 0 Вопрос: как оптимизировать ядро через sysctl чтобы решить данную проблему. И вообще - насколько я прав, что проблема в этом? Заранее благодарен за помощь) Вставить ник Quote
Vetal13 Posted August 3, 2011 Posted August 3, 2011 UDPXY который не расчитан на мои нагрузки ( в прайме - от 400 листенеров ). Откуда информация на сколько расчитан udpxy ? Вставить ник Quote
mkc Posted August 3, 2011 Author Posted August 3, 2011 Откуда информация на сколько расчитан udpxy ? общаемся с разработчиком - с Павлом Черенковым - та версия которая крутится у меня уже исправлена от ряда проблем - это его слова Вставить ник Quote
Vetal13 Posted August 3, 2011 Posted August 3, 2011 (edited) Откуда информация на сколько расчитан udpxy ? общаемся с разработчиком - с Павлом Черенковым - та версия которая крутится у меня уже исправлена от ряда проблем - это его слова Спасибо, буду знать Мы udpxy ( версия из портов) для себя немного модифицировали, путем увеличения буферов, поменяли вывод имени в процессах, прикрутил управление доступом. В максимуме пока было 250 коннектов на 1.2Гбит/сек трафика (Бой Кличка с Хейем :-) ) Проблем тоже нет. Edited August 3, 2011 by Vetal13 Вставить ник Quote
mkc Posted August 3, 2011 Author Posted August 3, 2011 и у Вас не было проблем с падением в <defunct> ? на таком количестве листенеров?))) Вставить ник Quote
Vetal13 Posted August 3, 2011 Posted August 3, 2011 (edited) и у Вас не было проблем с падением в <defunct> ? на таком количестве листенеров?))) В родной версии ограничение на 16 соединений, сразу сделали замену в udpxy-1.0-Chipmunk-16/uopt.h static const int MAX_CLIENT_COUNT = 512; static const ssize_t MAX_MCACHE_LEN = 2048 * 1024 * 10; За год зависал всего раза 3, по вечерам больше 100 постоянных коннектов 8.1-STABLE FreeBSD amd64 в sysctl.conf net.inet.icmp.icmplim=4000 kern.coredump=0 kern.maxfiles=1000000 kern.ipc.nmbclusters=1256000 kern.ipc.maxsockbuf=16384000 net.inet.udp.recvspace=4096000 net.inet.tcp.sendspace=1648576 Edited August 3, 2011 by Vetal13 Вставить ник Quote
mkc Posted August 3, 2011 Author Posted August 3, 2011 в udpxy-1.0-Chipmunk-20 по-умолчанию static const int MAX_CLIENT_COUNT = 5000; и все равно была проблема вылета, пока Павел не выдал альфу 21 правленную под нагрузку Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.