Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Высоконагруженная отправка push-уведомлений / Алексей Акулович

881 views

Published on

Презентация доклада

Published in: Engineering
  • Be the first to comment

Высоконагруженная отправка push-уведомлений / Алексей Акулович

  1. 1. Под капотом push- уведомлений Алексей Акулович ВКонтакте 2015
  2. 2. Push-уведомления • Google: GCM • Apple: APNS • Microsoft: MPNS, WNS
  3. 3. Путь пуша
  4. 4. Работа платформ • GCM: HTTPS POST с json телом • APNS: TCP TLS с бинарными пакетами • MPNS: HTTPS POST с xml телом + TLS renego • WNS: HTTPS POST с xml телом
  5. 5. Объем работы Число доставленных пушей по дням
  6. 6. Проблемы • Дорогой handshake • «Кривые» сертификаты • Поведение APNS при ошибках • Крайне медленные и сбоящие MPNS/WNS • MPNS TLS renegotiation
  7. 7. Как оно работает • API запросы через HTTPS => пачки пушей ~5 потоков* в 4 очереди платформ (GCM и т. п.) • По платформам => по приложениям платформ 4 потока в ~100 очередей приложений • По приложениям => по соединениям приложений ~100 потоков в 5-10к очередей • Каждое соединение обслуживает свой поток 5-20к потоков с 10-20к очередей * потоки выполнения, не processes/threads
  8. 8. Как оно работает
  9. 9. Не офф приложения • Заброшены без поддержки • Просроченные/не заданные сертификаты • Непредвиденный рост популярности • Некорректная отписка от пушей Их путь — органичения
  10. 10. Как оно работает • Весь код написан на Go • Работает на 24 слабых физических серверах • ulimit -n не менее 10,000 дескрипторов • Процесс на 500M-1G RSS памяти • Паузы GC по 4-10мс • CPU 200-500% из 16 ядер — 3х кратный запас • Обработка пуша за 40-900мс (тормозит все MPNS)
  11. 11. Приятные мелочи • Масса статистик по работе пушилок С локальной аггрегацией в воркерах ввиду массивной параллелизации • Подробнейшие сквозные логи выбранных пушей Очень полезно для изучения проблем по факту
  12. 12. Вопросы? Если вопросы возникнут позже: https://vk.com/ac

×