Перейти к содержимому
Калькуляторы

Помогите с оптимизацией под IPTV unicast ( Centos 6.0 Final )

Доброго времени суток!

Проблема следующая, сервер вещает 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 чтобы решить данную проблему. И вообще - насколько я прав, что проблема в этом?

 

Заранее благодарен за помощь)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

UDPXY который не расчитан на мои нагрузки ( в прайме - от 400 листенеров ).

 

Откуда информация на сколько расчитан udpxy ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Откуда информация на сколько расчитан udpxy ?

общаемся с разработчиком - с Павлом Черенковым - та версия которая крутится у меня уже исправлена от ряда проблем - это его слова

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Откуда информация на сколько расчитан udpxy ?

общаемся с разработчиком - с Павлом Черенковым - та версия которая крутится у меня уже исправлена от ряда проблем - это его слова

Спасибо, буду знать

 

Мы udpxy ( версия из портов) для себя немного модифицировали, путем увеличения буферов, поменяли вывод имени в процессах, прикрутил управление доступом.

В максимуме пока было 250 коннектов на 1.2Гбит/сек трафика (Бой Кличка с Хейем :-) )

Проблем тоже нет.

Изменено пользователем Vetal13

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и у Вас не было проблем с падением в <defunct> ? на таком количестве листенеров?)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и у Вас не было проблем с падением в <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

Изменено пользователем Vetal13

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в udpxy-1.0-Chipmunk-20 по-умолчанию static const int MAX_CLIENT_COUNT = 5000; и все равно была проблема вылета, пока Павел не выдал альфу 21 правленную под нагрузку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.