The Socially Speaking™ Social Skills Seminar Brochure PDF 2/28/16 by Penina Rybak
Highload2009 Rybak Badoo Os
-
Upload
highload2009 -
Category
Documents
-
view
3.296 -
download
0
Transcript of Highload2009 Rybak Badoo Os
![Page 1: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/1.jpg)
Open Source разработка в Badoo
Довгаль Антон, Нигматулин Андрей,Рыбак Алексей
Badoo.com
![Page 2: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/2.jpg)
В этой презентации• Open Source в Badoo
• PHP-FPM: менеджер FastCGI процессов для PHP
• PINBA: сервер статистики для PHP-приложений
• Blitz: ещё один шаблонный движок для PHP
![Page 3: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/3.jpg)
Badoo• dating network• 47 млн пользователей на сентябрь 2009• 17 языков• LNMP stack: linux, nginx, MySQL, PHP, С/C++• Почти вся OS-разработка – на C “вокруг” PHP• Маленькая команда• Наши OS-проекты направлены на достижение
удобства в эксплуатации, повышение управляемости, надёжности, производительности и снижение совокупной стоимости владения.
![Page 4: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/4.jpg)
PHP-FPM• Менеджер FastCGI-процессов для
PHP
• Архитектура сервера напоминает nginx (master + N workers)
![Page 5: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/5.jpg)
PHP-FPM: эксплуатация• Плавно обновляться, не теряя
соединения• Видеть все ошибки• Автоматически реагировать на
подозрительное поведение воркеров (выход, тормоза, массовые падения)
![Page 6: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/6.jpg)
PHP-PFM: основные возможности• Плавный перезапуск/обновление кода• Мастер ловит stderr воркеров• Автоматический трейсинг и завершение
работы медленных воркеров• Аварийный перезапуск при массовом падении
воркеров
![Page 7: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/7.jpg)
PHP-PFM: доп. возможности• Error header снимает проклятие пустой белой
страницы (200 OK на ошибку)• fastcgi_finish_request() – отдать output
клиенту, но продолжить работу (сессии, статистика и т.д.)
• Accelerated upload (поддержка request_body_file - nginx 0.5.9+)
![Page 8: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/8.jpg)
PHP-FPM: развитие• 2004-2006: набор разрозненных патчей• 2007: один патч поверх PHP (5.3.0-0.5.12,
http://php-fpm.org)• 2009: проект отнимает массу времени, руководство
берёт Michael Shadle, http://launchpad.net/php-fpm• Groups: highload-php-(en|ru)@googlegroups.com• Вы будете смеяться, но мы тоже не знаем, когда FPM
войдет в PHP
![Page 9: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/9.jpg)
PINBA• Сервер статистики для PHP-приложений• PHP Is Not Bottleneck Anymore• Какой-то попугай на одном из диалектов
языка австралийских аборигенов• http://pinba.org
![Page 10: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/10.jpg)
Эксплуатация веб-кластера• Число запросов (полное, на сервер …)• Время ответа (среднее, распределение, по скриптам,
по серверам …)• Использование ресурсов (rusage)• Непрерывный мониторинг в реальном времени• Качество приложений - что меняется при релизах?
![Page 11: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/11.jpg)
PINBA: архитектура• Клиентский модуль для PHP• Для любого запроса собираем script_name,
host, time, rusage …• При завершении отправляем UDP• И так со всех машин веб-кластера • Серверный тред внутри MySQL (v. 5.1.0+)• SQL-интерфейс ко всем данным
![Page 12: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/12.jpg)
PINBA: данные• request: script_name, host, domain, time, rusage, mempeak, output
size, timers• timers: время + пары “ключ (тэг) – значение” • пример: (0.001 sec; {group => db::update, server => dbs42})• SQL: “сырые” данные или отчеты• Отчеты: отдельные таблицы, на лету• Базовые отчёты (~10): по системе, по скриптам, по хост+скрипт…• Отчеты по произвольным тегам (ENGINE=PINBA
COMMENT='report:foo,bar‘) => {script_name, foo_value, bar_value, count, time}
![Page 13: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/13.jpg)
аварияпофиксили
Посмотрим внимательнее…
![Page 14: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/14.jpg)
WTF?
![Page 15: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/15.jpg)
Берём отчет по скриптам.
Периоды?... Это базы грузит регулярно запускаемый скрипт!
Имея «разрез» по тегам (что за операции, какие базы) – ещё быстрее найдем причину
![Page 16: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/16.jpg)
Blitz• Ещё один движок шаблонов• Написан на C, модуль для PHP• Исторически – замена php_templates• Быстрый (нам очень важен CPU usage на веб-машинах)• Принуждает к разделению труда• Верстальщик ничего не программирует• Неожиданно удобен для мультиязычных проектов• http://alexeyrybak.com/blitz/blitz_en.html• В продакшене Badоo с 2006 года
![Page 17: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/17.jpg)
![Page 18: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/18.jpg)
Blitz:причина
PHP is awesome!
![Page 19: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/19.jpg)
Blitz: дизайн (1/2)• View в MVC – это не шаблон!• View – это шаблон (только HTML + «разметка») и логика
отображения (PHP)• Исторически в Blitz шаблон и логика отображения были строго
разделены• Никакого совместного владения• Никаких “недопрограммистов”-верстальщиков• Минус: маргинален и неудобен одиночкам• За время жизни проекта по многочисленным заявкам пришлось-
таки добавлять логику в шаблоны• Нынче в Blitz есть условные операторы, инклюды, callbacks, et
cetera, но в Badoo нет ничего подобного
![Page 20: Highload2009 Rybak Badoo Os](https://reader036.fdocuments.in/reader036/viewer/2022062313/557f3fc1d8b42ac3288b48d1/html5/thumbnails/20.jpg)
Blitz: дизайн (2/2)• Принцип напоминает XML/XSLT• Только всё значительно проще• Шаблон накладывается на данные• Переменная - скаляр• Список - массив• Вложенные блоки – структура с соответствующими именами ключей• Любая логика реализуема в этих прототипах• Мультиязычность: «чистый» шаблон – прегенерация шаблонов на всех
языках, без динамических подстановок• Мультиязычность: можно получить всю структуру итераций, сохранить
«снэпшот» и переводить страницы по «снэпшотам» (в контексте любой ситуации)