54
Впервые в рунете: сказ о 100М писем в день Андрей Сас

Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

  • Upload
    ontico

  • View
    6.127

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Впервые в рунете:сказ о 100М писем в день

Андрей Сас

Page 2: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто говорит?

Page 3: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто говорит?Я:

• руковожу развитием почтовой рассылки, могу знать не все детали;

Page 4: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто говорит?Я:

• руковожу развитием почтовой рассылки, могу знать не все детали;

• не админ (извините!).

Page 5: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто говорит?Я:

• руковожу развитием почтовой рассылки, могу знать не все детали;

• не админ (извините!).

Хвастаюсь:

• полгода без пролёжек почтовой инфраструктуры;

Page 6: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто говорит?Я:

• руковожу развитием почтовой рассылки, могу знать не все детали;

• не админ (извините!).

Хвастаюсь:

• полгода без пролёжек почтовой инфраструктуры;

• 97% доставки в инбокс;

Page 7: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто говорит?Я:

• руковожу развитием почтовой рассылки, могу знать не все детали;

• не админ (извините!).

Хвастаюсь:

• полгода без пролёжек почтовой инфраструктуры;

• 97% доставки в инбокс;

• среднее время доставки почты – 25 с.

Page 8: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 9: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

О чём буду рассказывать?

Page 10: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

О чём буду рассказывать?

А как люди отправляют почту?

Page 11: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 12: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

О чём буду рассказывать?

Как отправлять много-много писем,быть уверенным в себе

и спать по ночам спокойно

Page 13: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Бизнес-задачи

1. Предоставить прозрачный API программистам.

2. Обеспечить отправку почты в объёмах до 100М писем в день.

3. Обеспечить доставку почты в инбоксы в 95%+ случаев.

Page 14: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

О чём НЕ буду рассказывать?

Как сделать так, чтобы ваши письма не попадали в Spam

Page 15: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А что в этом сложного?Казалось бы:

• поднял MTA

• сделал mail()

• …

• PROFIT!

Page 16: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А что в этом сложного?Казалось бы:

• поднял MTA

• сделал mail()

Однако:

• отправка 1 письма = обработка 1 динамического хита

Page 17: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А что в этом сложного?Казалось бы:

• поднял MTA

• сделал mail()

Однако:

• отправка 1 письма = обработка 1 динамического хита

• а ведь письма ещё нужно сгенерить

Page 18: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А что в этом сложного?Казалось бы:

• поднял MTA

• сделал mail()

Однако:

• отправка 1 письма = обработка 1 динамического хита

• а ведь письма ещё нужно сгенерить

• смелость пойти и узнать правду!!1111

Page 19: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Откуда взялась цифра 100М?

• 50М – каждый день• 70М – в пике• 100М – «пасаны ваще ребята. молодцы, могёте!»• 150М – с новой поставкой серверов

Page 20: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Особенности больших проектов

Наши мантры:• нужно отправлять письма асинхронно

Page 21: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Особенности больших проектов

Наши мантры:• нужно отправлять письма асинхронно• по-настоящему (вдвойне) асинхронно!

Page 22: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Особенности больших проектов

Наши мантры:• нужно отправлять письма асинхронно• по-настоящему (вдвойне) асинхронно!• требуется балансировка между серверами

Page 23: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Порядок отправки письма

1. Появляется необходимость создать письмо.

2. Постановка в очередь на создание письма.

3. Генерация письма по задачам из очереди на создание.

4. Постановка в очередь на отправку.

5. Отсылка письма из очереди на отправку.

Page 24: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Очередь на отправку

Наша реализация – на файлах. Преимущества:

1. Возможна работа без внешних сервисов.

2. Простота манипулирования письмами.

3. Легко получить статистику / логи.

4. Просто реализуются многократные попытки отправки.

Page 25: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

SSMTP вместо sendmail

Это SMTP-клиент, эмулирующий работу sendmail.

Нам он нравится, т.к.:

• ничего лишнего, только отсылает письмо в MTA (hub)

• супер простой конфиг

• мы его слегка допилили (таймауты + параметры)

Page 26: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Балансировка между MTAПервая версия – на базе железки F5 LTM:

• weighted round robin

• SMTP мониторинг

Текущая реализация – скрипты на PHP + мониторинг от F5 LTM:

• автоматическое управление всей балансировкой

• красивый веб-интерфейс

• скрипач (админ) не нужен!

Page 27: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Автоматизация при отправкеХорошее место, чтобы делать добрые дела:

• подстановку мониторинговых параметров в ссылки

• подстановку картинок для мониторинга открытий

• проверку целостности и корректности письма

• подстановку технических заголовков

• и даже проверку работоспособности ссылок!

Page 28: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Железо почтового кластераКластер – это по 10 машин на каждой из площадок:

• 8 отправляющих

• 2 принимающих

Важна только дисковая подсистема:

• in memory решения не пробуем, не хотим терять письма

• штатно 4 x SAS 10k в RAID 1+0, плюс контроллер с «батарейкой»

• для тестов 4 x SSD в RAID 5

Page 29: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Как тюнить MTA?• оптимизировать файловую систему

• увеличить число SMTP воркеров

• увеличить число DNS воркеров

• поставить локальный кэшер DNS-запросов

• раскладывать очередь по большому числу директорий

• увеличить лимиты на число соединений к одному MX серверу

• выставить лимиты на число писем в сессии

Page 30: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Наши MTAИсторически – Communigate Pro:

• надёжный

• ОЧЕНЬ быстрый

Для «проблемных» почтовых сервисов – Postfix:

• более конфигурируемый

• есть возможность доработать напильником

Page 31: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Хм, Communigate Pro?..

Но ведь есть Postfix, Exim,

Hurricane, Message Systems, Zrinity

и даже Exchange!

Page 32: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Корпоративный комбайн• Email – первоначальный, основной продукт

• Calendaring

• VoIP

• IM

• File storage

• IP PBX

• Presence

Page 33: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

А кто им пользуется?

Page 34: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Однако, цифры

На старой машине с 1 диском SCSI 10k:• 5 миллионов писем в сутки• до 100 писем в секунду в пике

Page 35: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Общее ощущение+ чрезвычайно стабилен, вплоть до LA = 200 и очереди в 1М писем

+ высокая производительность отправки писем

+ не требователен к памяти и CPU

+ достаточно настроек для большинства проектов

* платный

– нет возможности менять настройки для разных почтовиков

– нет возможности допилить самим

– проблемы с выводом некоторых видов статистики

Page 36: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Статистика и мониторинг

Пока не измеряешь – не контролируешь.

Что было в начале?

• графики по числу писем в очереди на каждом почтовике

• сколько каких писем отправили за сутки

• статистика по LA / CPU usage / Memory usage в Zabbix

Page 37: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 38: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Чего не хватало больше всего?

• число файлов, ожидающих отправки в MTA

• число ошибок отправки писем в MTA

• среднее время отправки письма в MTA

• самые загруженные отправкой почты скриптовые машины

• среднее время доставки почты в отдельный почтовый сервис

Page 39: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Как реализовали?

Число файлов, ожидающих отправки в MTA:

• просто считаем файлы!

Число ошибок отправки в MTA:

• просто считаем файлы!

Самые загруженные отправкой почты скриптовые машины:

• лог в MySQL

Page 40: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Как реализовали?

Среднее время отправки в MTA:

• PINBA – наш собственный сервис мониторинга

Среднее время доставки почты в отдельный почтовый сервис:

• парсим логи MTA

• хитрая агрегационная структура (highload!!1111)

Page 41: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 42: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 43: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 44: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 45: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 46: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 47: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Зачем так много?

Page 48: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Dashboard нас спасёт?1. Несколько dashboard’ов.

2. Даже dashboard’ы стали слишком сложными.

3. Детектировать аномалии даже на менее значимых графиках автоматически.

Page 49: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

19841. Отправленные:

• email id

• IP

• type

• language

• timestamp

• source host

2. Клики / открытия:

• email id

• timestamp

3. Входящие:

• type

• timestamp

Page 50: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Выводы1. Быть гуру не надо, достаточно хотеть разобраться.

2. Правильная архитектура без мониторинга не спасёт.

3. Внезапно: отправка почты – тоже highload!

4. …

5. PROFIT!!!

Page 51: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)

Ваши вопросы** Кроме вопросов о том, как мы доставляемся в Inbox

Page 52: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 53: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)
Page 54: Впервые в Рунете: сказ о 100М писем в день (Андрей Сас)