SlideShare a Scribd company logo
1 of 98
Download to read offline
Релиз после года разработки:
debug под новогодний звон бокалов и
40 дней поиска решения
Дмитрий Меньшиков
Aurora Technologies
[ИГРАЕТ МУЗЫКА]
https://t.me/dmitry_menshikov
https://t.me/noTieinIT
https://fb.com/d.menshikov
http://dmenshikov.com
Мы всегда ищем талантливых инженеров,
тех у кого от таких историй мурашки по
коже! Пишите в телегу!
Решение проблем – это
всегда зона роста!
Мой канал
Моя телега
История доступна онлайн
http://dmenshikov.com
https://speakerdeck.com/woz
Link to post: http://bit.ly/2IrzVqD
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
Старый флоу
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
transcoder
RTMP
Старый флоу
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
origin
transcoder
RTMP
Старый флоу
RTMP
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
origin
transcoder
RTMP
Старый флоу
RTMP
JPEG JPEG
RTMP
cc
Icons made by Freepik from www.flaticon.com
edge
ingest
origin
transcoder
RTMP
Старый флоу
RTMP
JPEG JPEG
RTMP
HLS
DASH
RTMP
cc
Icons made by Freepik from www.flaticon.com
edge
ingest
origin
transcoder
RTMP
Старый флоу
RTMP
JPEG JPEG
RTMP
RTMP
HLS
DASH
Почему решили переписывать???
RTMP
cc
Icons made by Freepik from www.flaticon.com
edge
ingest
origin
transcoder
RTMP
Новый флоу
RTMP
JPEG JPEG
RTMP
RTMP
HLS
DASH
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
Новый флоу
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
RTMP
Новый флоу
pimp
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
RTMP
Новый флоу
pimp
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
Новый флоу
pimp
crabscoder
RTMP
jss
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
RTMP
Новый флоу
pimp
crabscoder
RTMP
origin
RTMP
jss
RTMP
RTMP
cc
Icons made by Freepik from www.flaticon.com
ingest
origin
RTMP
Новый флоу
RTMP
pimp
crabscoder
jss
RTMP
RTMP
RTMP
cc
Icons made by Freepik from www.flaticon.com
edge
ingest
origin
RTMP
Новый флоу
RTMP
JPEG
RTMP
HLS
DASH
pimp
crabscoder
jss
RTMP
RTMP
RTMP
cc
Icons made by Freepik from www.flaticon.com
edge
ingest
origin
RTMP
Новый флоу
RTMP
JPEG
RTMP
RTMP
HLS
DASH
pimp
crabscoder
jss
HLS
RTMP
RTMP
RTMP
cc
Icons made by Freepik from www.flaticon.com
edge
ingest
origin
RTMP
Новый флоу
RTMP
JPEG
RTMP
RTMP
HLS
DASH
pimp
crabscoder
jss
HLS
RTMP
RTMP
crabscoder
Не все потоки на одном и том же Wowza ingest сервере испытывали
проблемы
Факты
Не все потоки на одном и том же Wowza ingest сервере испытывали
проблемы
На Wowza origin в логах
streamTimeout[origin/streamName]: Resetting connection:
wowz://10.2.1.174:1935/origin/streamName
Факты
Не все потоки на одном и том же Wowza ingest сервере испытывали
проблемы
На Wowza origin в логах
streamTimeout[origin/streamName]: Resetting connection:
wowz://10.2.1.174:1935/origin/streamName
У сапорта рост жалоб от партнеров на принудительное дисконнекты
стримеров
Факты
Не все потоки на одном и том же Wowza ingest сервере испытывали
проблемы
На Wowza origin в логах
streamTimeout[origin/streamName]: Resetting connection:
wowz://10.2.1.174:1935/origin/streamName
У сапорта рост жалоб от партнеров на принудительное дисконнекты
стримеров
В логах найдены SIGPIPE на транскодерах, что трактовали
как следствие обрыва на Wowza ingest
Факты
Не все потоки на одном и том же Wowza ingest сервере испытывали
проблемы
На Wowza origin в логах
streamTimeout[origin/streamName]: Resetting connection:
wowz://10.2.1.174:1935/origin/streamName
У сапорта рост жалоб от партнеров на принудительное дисконнекты
стримеров
В логах найдены SIGPIPE на транскодерах, что трактовали
как следствие обрыва на Wowza ingest
Количество дисконектов с ingest выросло на том же обьеме трафика
Факты
Кто виноват?
Виноваты разработчики
или софт
Виноват датацентр или
сеть, потери на канале
Виноваты админы, сервера,
маршрутизаторы
Кто виноват?
Виноваты разработчики
или софт
Виноват датацентр или
сеть, потери на канале
Виноваты админы, сервера,
маршрутизаторы
План действий
Восстановить карту всех
действий и везде: подключения,
отключения, просмотры, статусы
Diff Wowza модулей, фронтенда
клиентов, изменений настроек
HW/SW.
Еще раз пересмотреть метрики
Снифинг трафика и профайлинг
Проверить свою бизнес логику
Поспрашивать датацентр
Подозрение на сеть
Dec 28 15:08:34 w-e-3 consul[22751]: memberlist: Failed
TCP fallback ping: read tcp 10.2.0.229:39386-
>192.168.8.3:8301: i/o timeout...
RTMP
ingest
RTMP
Анализ FPS
$ ffprobe -i rtmp://host:port/path -show_frames
[FRAME]
media_type=video
stream_index=0
key_frame=1
pkt_dts_time=117.285000
pkt_duration_time=0.033000
pkt_size=32358
width=854
height=480
[/FRAME]
...
Анализ FPS
Анализ FPS
1) Фреймы выкидываются пачками
2) Потом нет фреймов
3) Судя по DTS стримеры либо генерируют
плохой стрим, либо Wowza паузит прием
данных
Wowza
???
Wowza
Нам поможет strace!
$ strace -c -f -p123
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
98.27 164058.185756 129258 1269232 328380 futex
0.96 1607.779169 10882 147742 epoll_wait
0.26 437.918455 283 1546081 198 write
0.20 339.308117 86119 3940 poll
0.15 245.116958 247 991033 clock_gettime
0.09 148.213531 3293634 45 41 restart_syscall
0.05 89.647620 280 319628 144406 read
0.00 4.673533 268 17416 lseek
0.00 1.546572 239 6478 getrusage
0.00 1.316333 243 5408 346 epoll_ctl
26477 13:58:09 futex(0x7f4d70064904, FUTEX_WAIT_PRIVATE, 1432479, NULL <unfinished ...>
30942 13:58:09 read(125, <unfinished ...>
20197 13:58:09 write(178, "307", 1 <unfinished ...>
13033 13:58:09 epoll_ctl(132, EPOLL_CTL_MOD, 159, {EPOLLIN, {u32=159, u64=159}} <unfinished
...>
9900 13:58:09 write(145, "307", 1 <unfinished ...>
21229 13:58:09 <... write resumed> ) = 104 <0.000134>
26477 13:58:09 <... futex resumed> ) = 0 <0.000125>
30942 13:58:09 read(125, <unfinished ...>
20197 13:58:09 write(178,
"343g265c177232365~376307w337e3146210~34434246263"..., 512 <unfinished ...>
13033 13:58:09 epoll_wait(132, <unfinished ...>
26477 13:58:09 futex(0x7f4d70064904, FUTEX_WAIT_PRIVATE, 1432479, NULL <unfinished ...>
30942 13:58:09 read(125, <unfinished ...>
20197 13:58:09 write(178, "307", 1 <unfinished ...>
13033 13:58:09 epoll_ctl(132, EPOLL_CTL_MOD, 159, {EPOLLIN, {u32=159, u64=159}} <unfinished
...>
9900 13:58:09 write(145, "307", 1 <unfinished ...>
21229 13:58:09 <... write resumed> ) = 104 <0.000134>
26477 13:58:09 <... futex resumed> ) = 0 <0.000125>
30942 13:58:09 read(125, <unfinished ...>
20197 13:58:09 write(178,
"343g265c177232365~376307w337e3146210~34434246263"..., 512 <unfinished ...>
13033 13:58:09 epoll_wait(132, <unfinished ...>
26477 13:58:09 futex(0x7f4d70064904, FUTEX_WAIT_PRIVATE, 1432479, NULL <unfinished ...>
30942 13:58:09 read(125, <unfinished ...>
20197 13:58:09 write(178, "307", 1 <unfinished ...>
13033 13:58:09 epoll_ctl(132, EPOLL_CTL_MOD, 159, {EPOLLIN, {u32=159, u64=159}} <unfinished
...>
9900 13:58:09 write(145, "307", 1 <unfinished ...>
21229 13:58:09 <... write resumed> ) = 104 <0.000134>
26477 13:58:09 <... futex resumed> ) = 0 <0.000125>
30942 13:58:09 read(125, <unfinished ...>
20197 13:58:09 write(178,
"343g265c177232365~376307w337e3146210~34434246263"..., 512 <unfinished ...>
13033 13:58:09 epoll_wait(132, <unfinished ...>
Видео в RTMP потоках начинается
после команды
createStream
Количество вызовов read по fd=99
Количество вызовов read… Еще ближе
Количество вызовов read и write
Прочитано байт функцией read
Время выполнения функции read
Записано байт функцией write
Время выполнения функции write
Кривая настройка ОС!
Тюнинг TCP стека и OS
net.core.rmem_* и net.ipv4.tcp_rmem – память для буферов чтения
net.core.wmem_* и net.ipv4.tcp_wmem – память для буферов записи
net.core.somaxconn – размер очереди установленных соединений ожидающих обработки accept()
net.core.netdev_max_backlog – макс размер очереди фреймов после копирования с ring buffer
NIC
fs.file-max – макс количество открытых файлов
net.ipv4.tcp_sack, net.ipv4.tcp_dack, net.ipv4.tcp_fack – управление TCP
Acknowledgement
Тюнинг TCP стека и OS
http://bit.ly/2LKagvg - Performance Tuning on Linux —
TCP
https://red.ht/35aozRQ - Red Hat Enterprise Linux Network
Performance Tuning Guide
http://bit.ly/30Jimsr - Tuning Linux to reach maximum
performance on 10 Gbps network
NIC tuning, IRQ, SoftIRQ
/proc/interrupts - IRQ
SoftIRQ
NAPI
ksoftirqd
ethtool
Просто цикл статей года! http://bit.ly/2OgrKRQ
Нам поможет perf
и flame graph
perf + flame graph
perf + flame graph
http://bit.ly/2o4Cwjx - Brandan Gregg blog
http://bit.ly/356zdsu - Java in Flames, отличное введение
для начинающих
Vzkernel 6 + Broadcom 5720 1G NIC
Vzkernel 6 + Broadcom 5720 1G NIC
Чтение ядра и драйвера, %#$&
tg3 драйвер при проблемах DMA (direct memory access) не ведет статистику и
не пишет о проблемах
При ошибках DMA пакеты могут приходить битыми, теряться
DMA debug появился только в ядре Linux 3.9
perf показал, что много времени уходит на debug_dma_map_page
В коде драйвера много комментариев про известные и нерешенные
проблемы с DMA
Читать сорсы надо после психологической подготовки
Чтение ядра и драйвера, %#$&
tg3 драйвер при проблемах DMA (direct memory access) не ведет статистику и
не пишет о проблемах
При ошибках DMA пакеты могут приходить битыми, теряться
DMA debug появился только в ядре Linux 3.9
perf показал, что много времени уходит на debug_dma_map_page
В коде драйвера много комментариев про известные и нерешенные
проблемы с DMA
Читать сорсы надо после психологической подготовки
Братан, последню гривню бросаю, атвичаю!
Это все кривой NIC, DMA и драйвер!
А как дела на других системах?
Например, на EC2?
EC2, xennet
А как дела на других системах?
Например, на EC2?
Братан, ставь другую OS и карту!
Intel X540 10G, например, есть на складе!
X540 10G
У Intel X540 10G есть трекинг количества ошибок DMA
Ошибки видны в ethtool: rx_page_failed и tx_page_failed
Есть поддержка дебага, пишет в /sys/kernel/debug/ixgbe
Еще пишет в dmesg ”TX DMA map failed” при ошибках
Vzkernel 7 + Intel X540 10G NIC
Vzkernel 7 + Intel X540 10G NIC
Vzkernel 7 + Intel X540 10G NIC
Не помогло, снова фризы
Ну хоть sockperf погоняем
Для замеров есть iperf, но
у него есть недостатки
sockperf гибче: кастомные размеры пакетов,
параметры соединений, например
TCP_NODELAY
Пакеты по 14 байт: 75 usec avg latency
Пакеты по 512 байт: 87 usec avg latency
Для замеров есть iperf, но
у него есть недостатки
sockperf гибче: кастомные размеры пакетов,
параметры соединений, например
TCP_NODELAY
Пакеты по 14 байт: 75 usec avg latency
Пакеты по 512 байт: 87 usec avg latency
Нам ничего не поможет!
https://github.com/LCMApps/video-quality-tools
video-quality-tools
Может задетектить даже перегруз CPU у пользователя!
Разработан нами с любовью!
Анализирует состояние live потока в RTMP, HLS, DASH
Следит за fps, bitrate, как на encoder, так и по доставке по сети
https://github.com/LCMApps/video-quality-tools
video-quality-tools
Ставь star на Github!
Нам приятно!
Centos 6 vs Centos 7
Давай шаг назад!
Снова тыкать палкой в
транскодер!
На транскодере начинаем
перехватывать трафик (pcap)
Релизим обновленный транскодер
Ставим paranoid debug level на
транскодер, с записью пакетов даже
[root@w-o-8.am /]# time curl vss-w-o-3:1935
real 0m0.109s
user 0m0.003s
sys 0m0.001s
[root@w-o-8.am /]# time curl vss-w-o-3:1935
real 0m7.008s
user 0m0.003s
sys 0m0.001s
Потыкали Wowza origin
Parsed host : 10.2.1.174
Parsed app : origin
RTMP_Connect0, failed to connect socket. 4 (Interrupted
system call)
rtmp://10.2.1.174/origin/117687be99efe796800e098e36b79f7e_
bc2_hd: Unknown error occurred
[AVIOContext @ 0x18d9cc0] Statistics: 152844 bytes read, 0
seeks
RTMP_SendPacket: fd=5, size=34
Invoking deleteStream
Exiting normally, received signal 15.
Логи транскодера
video-quality-tools
Пазл сложился
Стало ясно почему на графиках обрыв произошел раньше чем
поток деградировал на ingest
SIGPIPE на транскодере возникали из-за origin
Стало понятно почему тюнинг Centos 7 не дал результат
RTMP
Wowza-edge
Wowza-edge
Wowza-edge
RTMP
RTMP
Wowza-origin
RTMP
Wowza-edge
Wowza-edge
Wowza-edge
RTMP
RTMP
Wowza-origin
200x
200x
200x
RTMP
Wowza-edge
Wowza-edge
Wowza-edge
RTMP
RTMP
Wowza-origin
200x
200x
200x
За неделю был переписан ingest,
origin, edge
На базе nginx-rtmp-module
Ретроспектива
Готовить инструменты для поиска проблем заранее
Ретроспектива
Готовить инструменты для поиска проблем заранее
Перед серьезными релизами начинать собирать метрики до ввода в
эксплуатацию подсистем и смотреть на изменения метрик
Ретроспектива
Готовить инструменты для поиска проблем заранее
Перед серьезными релизами начинать собирать метрики до ввода в
эксплуатацию подсистем и смотреть на изменения метрик
Я забрался слишком глубоко, дойдя до кода драйверов. Оглядываться
стоит чаще.
Ретроспектива
Готовить инструменты для поиска проблем заранее
Перед серьезными релизами начинать собирать метрики до ввода в
эксплуатацию подсистем и смотреть на изменения метрик
Я забрался слишком глубоко, дойдя до кода драйверов. Оглядываться стоит
чаще.
Повышать квалификацию команды и больше инвестировать в обучение
Ретроспектива
Готовить инструменты для поиска проблем заранее
Перед серьезными релизами начинать собирать метрики до ввода в
эксплуатацию подсистем и смотреть на изменения метрик
Я забрался слишком глубоко, дойдя до кода драйверов. Оглядываться стоит
чаще.
Повышать квалификацию команды и больше инвестировать в обучение
Это был невероятный опыт и неимоверный трип
А как дела на других системах?
Например, на EC2?
Ах да…
Главный партнер получил прирост конверсии на
+57%
История доступна онлайн
http://dmenshikov.com
https://speakerdeck.com/woz
Link to post: http://bit.ly/2IrzVqD
https://t.me/dmitry_menshikov
https://t.me/noTieinIT
https://fb.com/d.menshikov
http://dmenshikov.com
Мы всегда ищем талантливых инженеров,
тех у кого от таких историй мурашки по
коже! Пишите в телегу!
Решение проблем – это
всегда зона роста!
Мой канал
Моя телега

More Related Content

Similar to Dmitry Menshikov "Release after the year of development: fierce debug to the New Year’s clinking of glasses and 40 days of the search for the solution"

Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщикаmcslayer
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Yandex
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)Ontico
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009Liudmila Li
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кодаTatyanazaxarova
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаAndrey Karpov
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиCisco Russia
 
HighLoad++ 2019: iptables + consul = :3
HighLoad++ 2019: iptables + consul = :3HighLoad++ 2019: iptables + consul = :3
HighLoad++ 2019: iptables + consul = :3Ivan Agarkov
 
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003Andrey Beshkov
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Сергей Рыжиков, Александр Сербул (1С-Битрикс)Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Сергей Рыжиков, Александр Сербул (1С-Битрикс)Ontico
 
Питон в малине
Питон в малинеПитон в малине
Питон в малинеPyNSK
 
Анонс новых моделей серверов ДЕПО Шторм российского производства
Анонс новых моделей серверов ДЕПО Шторм российского производстваАнонс новых моделей серверов ДЕПО Шторм российского производства
Анонс новых моделей серверов ДЕПО Шторм российского производстваDEPO Computers
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениSQALab
 

Similar to Dmitry Menshikov "Release after the year of development: fierce debug to the New Year’s clinking of glasses and 40 days of the search for the solution" (20)

Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщика
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009
 
Log+
Log+Log+
Log+
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кода
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сети
 
Net2
Net2Net2
Net2
 
HighLoad++ 2019: iptables + consul = :3
HighLoad++ 2019: iptables + consul = :3HighLoad++ 2019: iptables + consul = :3
HighLoad++ 2019: iptables + consul = :3
 
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Сергей Рыжиков, Александр Сербул (1С-Битрикс)Сергей Рыжиков, Александр Сербул (1С-Битрикс)
Сергей Рыжиков, Александр Сербул (1С-Битрикс)
 
Citrix on VMware
Citrix on VMwareCitrix on VMware
Citrix on VMware
 
Питон в малине
Питон в малинеПитон в малине
Питон в малине
 
Lirc или домашний медиацентр
Lirc или домашний медиацентрLirc или домашний медиацентр
Lirc или домашний медиацентр
 
Анонс новых моделей серверов ДЕПО Шторм российского производства
Анонс новых моделей серверов ДЕПО Шторм российского производстваАнонс новых моделей серверов ДЕПО Шторм российского производства
Анонс новых моделей серверов ДЕПО Шторм российского производства
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 

More from Fwdays

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Dmitry Menshikov "Release after the year of development: fierce debug to the New Year’s clinking of glasses and 40 days of the search for the solution"

  • 1. Релиз после года разработки: debug под новогодний звон бокалов и 40 дней поиска решения Дмитрий Меньшиков Aurora Technologies
  • 3. https://t.me/dmitry_menshikov https://t.me/noTieinIT https://fb.com/d.menshikov http://dmenshikov.com Мы всегда ищем талантливых инженеров, тех у кого от таких историй мурашки по коже! Пишите в телегу! Решение проблем – это всегда зона роста! Мой канал Моя телега
  • 5. RTMP cc Icons made by Freepik from www.flaticon.com ingest Старый флоу
  • 6. RTMP cc Icons made by Freepik from www.flaticon.com ingest transcoder RTMP Старый флоу
  • 7. RTMP cc Icons made by Freepik from www.flaticon.com ingest origin transcoder RTMP Старый флоу RTMP
  • 8. RTMP cc Icons made by Freepik from www.flaticon.com ingest origin transcoder RTMP Старый флоу RTMP JPEG JPEG
  • 9. RTMP cc Icons made by Freepik from www.flaticon.com edge ingest origin transcoder RTMP Старый флоу RTMP JPEG JPEG RTMP HLS DASH
  • 10. RTMP cc Icons made by Freepik from www.flaticon.com edge ingest origin transcoder RTMP Старый флоу RTMP JPEG JPEG RTMP RTMP HLS DASH
  • 12. RTMP cc Icons made by Freepik from www.flaticon.com edge ingest origin transcoder RTMP Новый флоу RTMP JPEG JPEG RTMP RTMP HLS DASH
  • 13. RTMP cc Icons made by Freepik from www.flaticon.com ingest Новый флоу
  • 14. RTMP cc Icons made by Freepik from www.flaticon.com ingest RTMP Новый флоу pimp
  • 15. RTMP cc Icons made by Freepik from www.flaticon.com ingest RTMP Новый флоу pimp
  • 16. RTMP cc Icons made by Freepik from www.flaticon.com ingest Новый флоу pimp crabscoder RTMP jss
  • 17. RTMP cc Icons made by Freepik from www.flaticon.com ingest RTMP Новый флоу pimp crabscoder RTMP origin RTMP jss RTMP
  • 18. RTMP cc Icons made by Freepik from www.flaticon.com ingest origin RTMP Новый флоу RTMP pimp crabscoder jss RTMP RTMP
  • 19. RTMP cc Icons made by Freepik from www.flaticon.com edge ingest origin RTMP Новый флоу RTMP JPEG RTMP HLS DASH pimp crabscoder jss RTMP RTMP
  • 20. RTMP cc Icons made by Freepik from www.flaticon.com edge ingest origin RTMP Новый флоу RTMP JPEG RTMP RTMP HLS DASH pimp crabscoder jss HLS RTMP RTMP
  • 21. RTMP cc Icons made by Freepik from www.flaticon.com edge ingest origin RTMP Новый флоу RTMP JPEG RTMP RTMP HLS DASH pimp crabscoder jss HLS RTMP RTMP
  • 22.
  • 23.
  • 25. Не все потоки на одном и том же Wowza ingest сервере испытывали проблемы Факты
  • 26. Не все потоки на одном и том же Wowza ingest сервере испытывали проблемы На Wowza origin в логах streamTimeout[origin/streamName]: Resetting connection: wowz://10.2.1.174:1935/origin/streamName Факты
  • 27. Не все потоки на одном и том же Wowza ingest сервере испытывали проблемы На Wowza origin в логах streamTimeout[origin/streamName]: Resetting connection: wowz://10.2.1.174:1935/origin/streamName У сапорта рост жалоб от партнеров на принудительное дисконнекты стримеров Факты
  • 28. Не все потоки на одном и том же Wowza ingest сервере испытывали проблемы На Wowza origin в логах streamTimeout[origin/streamName]: Resetting connection: wowz://10.2.1.174:1935/origin/streamName У сапорта рост жалоб от партнеров на принудительное дисконнекты стримеров В логах найдены SIGPIPE на транскодерах, что трактовали как следствие обрыва на Wowza ingest Факты
  • 29. Не все потоки на одном и том же Wowza ingest сервере испытывали проблемы На Wowza origin в логах streamTimeout[origin/streamName]: Resetting connection: wowz://10.2.1.174:1935/origin/streamName У сапорта рост жалоб от партнеров на принудительное дисконнекты стримеров В логах найдены SIGPIPE на транскодерах, что трактовали как следствие обрыва на Wowza ingest Количество дисконектов с ingest выросло на том же обьеме трафика Факты
  • 30. Кто виноват? Виноваты разработчики или софт Виноват датацентр или сеть, потери на канале Виноваты админы, сервера, маршрутизаторы
  • 31. Кто виноват? Виноваты разработчики или софт Виноват датацентр или сеть, потери на канале Виноваты админы, сервера, маршрутизаторы
  • 32. План действий Восстановить карту всех действий и везде: подключения, отключения, просмотры, статусы Diff Wowza модулей, фронтенда клиентов, изменений настроек HW/SW. Еще раз пересмотреть метрики Снифинг трафика и профайлинг Проверить свою бизнес логику Поспрашивать датацентр
  • 33. Подозрение на сеть Dec 28 15:08:34 w-e-3 consul[22751]: memberlist: Failed TCP fallback ping: read tcp 10.2.0.229:39386- >192.168.8.3:8301: i/o timeout...
  • 34. RTMP ingest RTMP Анализ FPS $ ffprobe -i rtmp://host:port/path -show_frames [FRAME] media_type=video stream_index=0 key_frame=1 pkt_dts_time=117.285000 pkt_duration_time=0.033000 pkt_size=32358 width=854 height=480 [/FRAME] ...
  • 36. Анализ FPS 1) Фреймы выкидываются пачками 2) Потом нет фреймов 3) Судя по DTS стримеры либо генерируют плохой стрим, либо Wowza паузит прием данных
  • 38. Wowza
  • 40. $ strace -c -f -p123 % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 98.27 164058.185756 129258 1269232 328380 futex 0.96 1607.779169 10882 147742 epoll_wait 0.26 437.918455 283 1546081 198 write 0.20 339.308117 86119 3940 poll 0.15 245.116958 247 991033 clock_gettime 0.09 148.213531 3293634 45 41 restart_syscall 0.05 89.647620 280 319628 144406 read 0.00 4.673533 268 17416 lseek 0.00 1.546572 239 6478 getrusage 0.00 1.316333 243 5408 346 epoll_ctl
  • 41. 26477 13:58:09 futex(0x7f4d70064904, FUTEX_WAIT_PRIVATE, 1432479, NULL <unfinished ...> 30942 13:58:09 read(125, <unfinished ...> 20197 13:58:09 write(178, "307", 1 <unfinished ...> 13033 13:58:09 epoll_ctl(132, EPOLL_CTL_MOD, 159, {EPOLLIN, {u32=159, u64=159}} <unfinished ...> 9900 13:58:09 write(145, "307", 1 <unfinished ...> 21229 13:58:09 <... write resumed> ) = 104 <0.000134> 26477 13:58:09 <... futex resumed> ) = 0 <0.000125> 30942 13:58:09 read(125, <unfinished ...> 20197 13:58:09 write(178, "343g265c177232365~376307w337e3146210~34434246263"..., 512 <unfinished ...> 13033 13:58:09 epoll_wait(132, <unfinished ...>
  • 42. 26477 13:58:09 futex(0x7f4d70064904, FUTEX_WAIT_PRIVATE, 1432479, NULL <unfinished ...> 30942 13:58:09 read(125, <unfinished ...> 20197 13:58:09 write(178, "307", 1 <unfinished ...> 13033 13:58:09 epoll_ctl(132, EPOLL_CTL_MOD, 159, {EPOLLIN, {u32=159, u64=159}} <unfinished ...> 9900 13:58:09 write(145, "307", 1 <unfinished ...> 21229 13:58:09 <... write resumed> ) = 104 <0.000134> 26477 13:58:09 <... futex resumed> ) = 0 <0.000125> 30942 13:58:09 read(125, <unfinished ...> 20197 13:58:09 write(178, "343g265c177232365~376307w337e3146210~34434246263"..., 512 <unfinished ...> 13033 13:58:09 epoll_wait(132, <unfinished ...>
  • 43. 26477 13:58:09 futex(0x7f4d70064904, FUTEX_WAIT_PRIVATE, 1432479, NULL <unfinished ...> 30942 13:58:09 read(125, <unfinished ...> 20197 13:58:09 write(178, "307", 1 <unfinished ...> 13033 13:58:09 epoll_ctl(132, EPOLL_CTL_MOD, 159, {EPOLLIN, {u32=159, u64=159}} <unfinished ...> 9900 13:58:09 write(145, "307", 1 <unfinished ...> 21229 13:58:09 <... write resumed> ) = 104 <0.000134> 26477 13:58:09 <... futex resumed> ) = 0 <0.000125> 30942 13:58:09 read(125, <unfinished ...> 20197 13:58:09 write(178, "343g265c177232365~376307w337e3146210~34434246263"..., 512 <unfinished ...> 13033 13:58:09 epoll_wait(132, <unfinished ...> Видео в RTMP потоках начинается после команды createStream
  • 52. Тюнинг TCP стека и OS net.core.rmem_* и net.ipv4.tcp_rmem – память для буферов чтения net.core.wmem_* и net.ipv4.tcp_wmem – память для буферов записи net.core.somaxconn – размер очереди установленных соединений ожидающих обработки accept() net.core.netdev_max_backlog – макс размер очереди фреймов после копирования с ring buffer NIC fs.file-max – макс количество открытых файлов net.ipv4.tcp_sack, net.ipv4.tcp_dack, net.ipv4.tcp_fack – управление TCP Acknowledgement
  • 53. Тюнинг TCP стека и OS http://bit.ly/2LKagvg - Performance Tuning on Linux — TCP https://red.ht/35aozRQ - Red Hat Enterprise Linux Network Performance Tuning Guide http://bit.ly/30Jimsr - Tuning Linux to reach maximum performance on 10 Gbps network
  • 54. NIC tuning, IRQ, SoftIRQ /proc/interrupts - IRQ SoftIRQ NAPI ksoftirqd ethtool Просто цикл статей года! http://bit.ly/2OgrKRQ
  • 56. perf + flame graph
  • 57. perf + flame graph http://bit.ly/2o4Cwjx - Brandan Gregg blog http://bit.ly/356zdsu - Java in Flames, отличное введение для начинающих
  • 58. Vzkernel 6 + Broadcom 5720 1G NIC
  • 59. Vzkernel 6 + Broadcom 5720 1G NIC
  • 60. Чтение ядра и драйвера, %#$& tg3 драйвер при проблемах DMA (direct memory access) не ведет статистику и не пишет о проблемах При ошибках DMA пакеты могут приходить битыми, теряться DMA debug появился только в ядре Linux 3.9 perf показал, что много времени уходит на debug_dma_map_page В коде драйвера много комментариев про известные и нерешенные проблемы с DMA Читать сорсы надо после психологической подготовки
  • 61. Чтение ядра и драйвера, %#$& tg3 драйвер при проблемах DMA (direct memory access) не ведет статистику и не пишет о проблемах При ошибках DMA пакеты могут приходить битыми, теряться DMA debug появился только в ядре Linux 3.9 perf показал, что много времени уходит на debug_dma_map_page В коде драйвера много комментариев про известные и нерешенные проблемы с DMA Читать сорсы надо после психологической подготовки Братан, последню гривню бросаю, атвичаю! Это все кривой NIC, DMA и драйвер!
  • 62. А как дела на других системах? Например, на EC2?
  • 64. А как дела на других системах? Например, на EC2? Братан, ставь другую OS и карту! Intel X540 10G, например, есть на складе!
  • 65. X540 10G У Intel X540 10G есть трекинг количества ошибок DMA Ошибки видны в ethtool: rx_page_failed и tx_page_failed Есть поддержка дебага, пишет в /sys/kernel/debug/ixgbe Еще пишет в dmesg ”TX DMA map failed” при ошибках
  • 66. Vzkernel 7 + Intel X540 10G NIC
  • 67. Vzkernel 7 + Intel X540 10G NIC
  • 68. Vzkernel 7 + Intel X540 10G NIC
  • 69. Не помогло, снова фризы Ну хоть sockperf погоняем
  • 70. Для замеров есть iperf, но у него есть недостатки sockperf гибче: кастомные размеры пакетов, параметры соединений, например TCP_NODELAY Пакеты по 14 байт: 75 usec avg latency Пакеты по 512 байт: 87 usec avg latency
  • 71. Для замеров есть iperf, но у него есть недостатки sockperf гибче: кастомные размеры пакетов, параметры соединений, например TCP_NODELAY Пакеты по 14 байт: 75 usec avg latency Пакеты по 512 байт: 87 usec avg latency
  • 72. Нам ничего не поможет!
  • 73. https://github.com/LCMApps/video-quality-tools video-quality-tools Может задетектить даже перегруз CPU у пользователя! Разработан нами с любовью! Анализирует состояние live потока в RTMP, HLS, DASH Следит за fps, bitrate, как на encoder, так и по доставке по сети
  • 75. Centos 6 vs Centos 7
  • 76.
  • 77.
  • 78. Давай шаг назад! Снова тыкать палкой в транскодер!
  • 79. На транскодере начинаем перехватывать трафик (pcap) Релизим обновленный транскодер Ставим paranoid debug level на транскодер, с записью пакетов даже
  • 80.
  • 81. [root@w-o-8.am /]# time curl vss-w-o-3:1935 real 0m0.109s user 0m0.003s sys 0m0.001s [root@w-o-8.am /]# time curl vss-w-o-3:1935 real 0m7.008s user 0m0.003s sys 0m0.001s Потыкали Wowza origin
  • 82. Parsed host : 10.2.1.174 Parsed app : origin RTMP_Connect0, failed to connect socket. 4 (Interrupted system call) rtmp://10.2.1.174/origin/117687be99efe796800e098e36b79f7e_ bc2_hd: Unknown error occurred [AVIOContext @ 0x18d9cc0] Statistics: 152844 bytes read, 0 seeks RTMP_SendPacket: fd=5, size=34 Invoking deleteStream Exiting normally, received signal 15. Логи транскодера
  • 84. Пазл сложился Стало ясно почему на графиках обрыв произошел раньше чем поток деградировал на ingest SIGPIPE на транскодере возникали из-за origin Стало понятно почему тюнинг Centos 7 не дал результат
  • 85.
  • 86.
  • 90. За неделю был переписан ingest, origin, edge На базе nginx-rtmp-module
  • 92. Ретроспектива Готовить инструменты для поиска проблем заранее Перед серьезными релизами начинать собирать метрики до ввода в эксплуатацию подсистем и смотреть на изменения метрик
  • 93. Ретроспектива Готовить инструменты для поиска проблем заранее Перед серьезными релизами начинать собирать метрики до ввода в эксплуатацию подсистем и смотреть на изменения метрик Я забрался слишком глубоко, дойдя до кода драйверов. Оглядываться стоит чаще.
  • 94. Ретроспектива Готовить инструменты для поиска проблем заранее Перед серьезными релизами начинать собирать метрики до ввода в эксплуатацию подсистем и смотреть на изменения метрик Я забрался слишком глубоко, дойдя до кода драйверов. Оглядываться стоит чаще. Повышать квалификацию команды и больше инвестировать в обучение
  • 95. Ретроспектива Готовить инструменты для поиска проблем заранее Перед серьезными релизами начинать собирать метрики до ввода в эксплуатацию подсистем и смотреть на изменения метрик Я забрался слишком глубоко, дойдя до кода драйверов. Оглядываться стоит чаще. Повышать квалификацию команды и больше инвестировать в обучение Это был невероятный опыт и неимоверный трип
  • 96. А как дела на других системах? Например, на EC2? Ах да… Главный партнер получил прирост конверсии на +57%
  • 98. https://t.me/dmitry_menshikov https://t.me/noTieinIT https://fb.com/d.menshikov http://dmenshikov.com Мы всегда ищем талантливых инженеров, тех у кого от таких историй мурашки по коже! Пишите в телегу! Решение проблем – это всегда зона роста! Мой канал Моя телега