12
Под капотом push- уведомлений Алексей Акулович ВКонтакте 2015

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

  • Upload
    ontico

  • View
    787

  • Download
    2

Embed Size (px)

Citation preview

Под капотом push-уведомлений

Алексей АкуловичВКонтакте

2015

Push-уведомления• Google: GCM

• Apple: APNS

• Microsoft: MPNS, WNS

Путь пуша

Работа платформ• GCM: HTTPS POST с json телом

• APNS: TCP TLS с бинарными пакетами

• MPNS: HTTPS POST с xml телом + TLS renego

• WNS: HTTPS POST с xml телом

Объем работыЧисло доставленных пушей по дням

Проблемы• Дорогой handshake

• «Кривые» сертификаты

• Поведение APNS при ошибках

• Крайне медленные и сбоящие MPNS/WNS

• MPNS TLS renegotiation

Как оно работает• API запросы через HTTPS => пачки пушей

~5 потоков* в 4 очереди платформ (GCM и т. п.)

• По платформам => по приложениям платформ 4 потока в ~100 очередей приложений

• По приложениям => по соединениям приложений ~100 потоков в 5-10к очередей

• Каждое соединение обслуживает свой поток 5-20к потоков с 10-20к очередей

* потоки выполнения, не processes/threads

Как оно работает

Не офф приложения• Заброшены без поддержки

• Просроченные/не заданные сертификаты

• Непредвиденный рост популярности

• Некорректная отписка от пушей

Их путь — органичения

Как оно работает• Весь код написан на Go

• Работает на 24 слабых физических серверах

• ulimit -n не менее 10,000 дескрипторов

• Процесс на 500M-1G RSS памяти

• Паузы GC по 4-10мс

• CPU 200-500% из 16 ядер — 3х кратный запас

• Обработка пуша за 40-900мс (тормозит все MPNS)

Приятные мелочи• Масса статистик по работе пушилок

С локальной аггрегацией в воркерах ввиду массивной параллелизации

• Подробнейшие сквозные логи выбранных пушейОчень полезно для изучения проблем по факту

Вопросы?

Если вопросы возникнут позже:https://vk.com/ac