SlideShare a Scribd company logo
High Availability в жизни
обычного разработчика
Александр Алфимов для Sumy PHP User Group.
100,000,000 запросов в день
- 80% -- статические файлы (CSS, JS, PNG/JPEG, MP4)
- 20% -- динамические данные (результат работы CMS)
Несколько физических серверов
- 1 сервер для редакторов
- 2 кеш-сервера
- 2 сервера баз данных
- 2 сервера приложений
Кеш-сервер. Varnish и nginx.
- nginx отдаёт все статические файлы (стили, скрипты, изображения,
видео)
- Запросы динамических данных отправляем на Varnish, который запущен
на этом же сервере
- Weighted round robin балансировка для серверов приложений в Varnish
- Disk cache работает достаточно хорошо в Varnish
- Используем разные cache ID для мобильной и основной версии. Туда же
можно добавить идентификатор пользователя
Пример настроек для nginx
Пример настроек Varnish
Пример настроек Varnish
Пример настроек Varnish
Статистика с одного из кеш-серверов
Информация о кеш-сервере
Сервер приложения. Drupal 7, Nginx и PHP-FPM.
- Drupal 7 в качестве CMS
- autoslave модуль для распределения запросов между MySQL master и
slave
- contexts модуль для управления HTTP-заголовками (Expires и т.д.)
- Кеширование на уровне Drupal:
- Memcached как кеш-сервер
- Sessions, views, blocks в memcached
- nginx как веб-сервер
Пример настроек PHP-FPM
Информация о сервере приложений
Сервер баз данных. Percona MySQL.
- Master-slave репликация для горизонтального масштабирования read-
only серверов
- Master-master репликация в случае write-heavy приложения
- Percona XtraDB Cluster как более современная альтернатива - How To
- Аккуратная настройка InnoDB переменных для индексов и буферов -
Percona Tools
- tmpfs раздел (до 20% от доступного объема ОЗУ) для tmpdir
Статистика с одного из серверов БД
Сервер для редакторов. Nginx, PHP-FPM и
Percona MySQL.
- Работаем только с master-сервером
- Отключаем autoslave
- Следим для настройками memcache bins
Синхронизация данных
- rsync в случае односторонней синхронизации (быстро и просто)
- NFS+keepalived или GlusterFS для shared file system (медленно)
Поиск
- Apache Solr для англоязычных сайтов
- Поддерживает master-slave репликацию для горизонтального масштабирования
- Sphinx для русскоязычных
- MySQL Fulltext Index в случае, если нужен поиск средствами СУБД
Мониторинг
- Newrelic
- Есть модули для сбора статистики MySQL, nginx и varnish
- atop, iotop для ручного сбора и анализа данных по нагрузке
- mytop как альтернатива show processlist
- InnoDB Status
Часто встречающиеся проблемы
- сервер приложений не отвечает при высокой нагрузке даже по SSH
- Ограничить количество процессов PHP в настройках PHP-FPM, проверить системные
логи на предмет out of memory process kills
- Проверить количество процессов PHP, посмотреть соответствие использования CPU на
сервере БД и сервере приложений
- сервер баз данных работает очень медленно
- mytop, show processlist, slow queries log
- Explain для популярных запросов
- Query cache не всегда хорошо
Спасибо за внимание :-)
И да, мы ищем таланты :-)
hello@cpcs.ws

More Related Content

PDF
Консольные приложения на Go
PDF
Twisted Framework - сетевые приложения в Python
PPTX
Применяем Ansible
PPTX
07 virtual hosts_ru
PPTX
04 web server_deployment_ru
PDF
Thumbtack Expertise Days # 5 - Ansible
PPTX
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
PDF
07 - Web-технологии. Web-сервера
Консольные приложения на Go
Twisted Framework - сетевые приложения в Python
Применяем Ansible
07 virtual hosts_ru
04 web server_deployment_ru
Thumbtack Expertise Days # 5 - Ansible
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
07 - Web-технологии. Web-сервера

What's hot (20)

PPT
Видеохостинг своими руками
PPTX
Cпецкурс 2014, занятие 7. Web-приложения
PPT
Загрузка, обработка, хранение и отдача статики
PPTX
Первые шаги с RabbitMQ
PPTX
05 db server_deployment_ru
PDF
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
PPTX
06 php instalation_ru
PDF
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
PPTX
03 web server_architecture_ru
PDF
05 - Web-технологии. Сетевые протоколы
PDF
08 - Web-технологии. Архитектура frontend-backend
PPT
Распределенное хранилище Ceph. Обзор и практические способы использования
PPTX
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
PDF
Android Telegram S Optimizations
PDF
Хранилище 101
PPTX
SOA: строим свой service mesh / Иван Круглов (Booking.com)
PDF
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
PPTX
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
PDF
ekbpy'2012 - Данила Штань - Распределенное хранилище
Видеохостинг своими руками
Cпецкурс 2014, занятие 7. Web-приложения
Загрузка, обработка, хранение и отдача статики
Первые шаги с RabbitMQ
05 db server_deployment_ru
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
06 php instalation_ru
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
03 web server_architecture_ru
05 - Web-технологии. Сетевые протоколы
08 - Web-технологии. Архитектура frontend-backend
Распределенное хранилище Ceph. Обзор и практические способы использования
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
Android Telegram S Optimizations
Хранилище 101
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
ekbpy'2012 - Данила Штань - Распределенное хранилище
Ad

Similar to High Availability в жизни обычного разработчика (20)

PPTX
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
PDF
FT & HA Rails приложений приложений — это просто
PPTX
антон веснин Rails Application Servers
PPTX
развертывание среды Rails (антон веснин, Locum Ru)
PPTX
Hosting for forbes.ru_
PPTX
Управление облачной инфраструктурой
PDF
Extreme cloud storage on free bsd (Андрей Пантюхин)
PPT
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
ODP
Nginx Igor Sysoev
PDF
2020.10.13 HA Redis is simple. FWDays Highload
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PDF
Rsnx tsvetkov che btrix conf 2015
PDF
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
PPTX
мониторинг производительности приложения на PINBA
PPT
Major mistakes in site moving
PPTX
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
PPTX
DataCore case studies
PPTX
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
PDF
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
FT & HA Rails приложений приложений — это просто
антон веснин Rails Application Servers
развертывание среды Rails (антон веснин, Locum Ru)
Hosting for forbes.ru_
Управление облачной инфраструктурой
Extreme cloud storage on free bsd (Андрей Пантюхин)
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
Nginx Igor Sysoev
2020.10.13 HA Redis is simple. FWDays Highload
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Rsnx tsvetkov che btrix conf 2015
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
мониторинг производительности приложения на PINBA
Major mistakes in site moving
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DataCore case studies
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
Ad

More from Sumy PHP User Grpoup (7)

PDF
PDF
Using Elastic Search Outside Full-Text Search
PPTX
Путешествия во времени
PPTX
Service approach for development REST API in Symfony2
PPTX
Service approach for development Rest API in Symfony2
PPTX
Php micro frameworks
PPTX
Oro open source solutions
Using Elastic Search Outside Full-Text Search
Путешествия во времени
Service approach for development REST API in Symfony2
Service approach for development Rest API in Symfony2
Php micro frameworks
Oro open source solutions

High Availability в жизни обычного разработчика

  • 1. High Availability в жизни обычного разработчика Александр Алфимов для Sumy PHP User Group.
  • 2. 100,000,000 запросов в день - 80% -- статические файлы (CSS, JS, PNG/JPEG, MP4) - 20% -- динамические данные (результат работы CMS) Несколько физических серверов - 1 сервер для редакторов - 2 кеш-сервера - 2 сервера баз данных - 2 сервера приложений
  • 3. Кеш-сервер. Varnish и nginx. - nginx отдаёт все статические файлы (стили, скрипты, изображения, видео) - Запросы динамических данных отправляем на Varnish, который запущен на этом же сервере - Weighted round robin балансировка для серверов приложений в Varnish - Disk cache работает достаточно хорошо в Varnish - Используем разные cache ID для мобильной и основной версии. Туда же можно добавить идентификатор пользователя
  • 8. Статистика с одного из кеш-серверов
  • 10. Сервер приложения. Drupal 7, Nginx и PHP-FPM. - Drupal 7 в качестве CMS - autoslave модуль для распределения запросов между MySQL master и slave - contexts модуль для управления HTTP-заголовками (Expires и т.д.) - Кеширование на уровне Drupal: - Memcached как кеш-сервер - Sessions, views, blocks в memcached - nginx как веб-сервер
  • 13. Сервер баз данных. Percona MySQL. - Master-slave репликация для горизонтального масштабирования read- only серверов - Master-master репликация в случае write-heavy приложения - Percona XtraDB Cluster как более современная альтернатива - How To - Аккуратная настройка InnoDB переменных для индексов и буферов - Percona Tools - tmpfs раздел (до 20% от доступного объема ОЗУ) для tmpdir
  • 14. Статистика с одного из серверов БД
  • 15. Сервер для редакторов. Nginx, PHP-FPM и Percona MySQL. - Работаем только с master-сервером - Отключаем autoslave - Следим для настройками memcache bins
  • 16. Синхронизация данных - rsync в случае односторонней синхронизации (быстро и просто) - NFS+keepalived или GlusterFS для shared file system (медленно)
  • 17. Поиск - Apache Solr для англоязычных сайтов - Поддерживает master-slave репликацию для горизонтального масштабирования - Sphinx для русскоязычных - MySQL Fulltext Index в случае, если нужен поиск средствами СУБД
  • 18. Мониторинг - Newrelic - Есть модули для сбора статистики MySQL, nginx и varnish - atop, iotop для ручного сбора и анализа данных по нагрузке - mytop как альтернатива show processlist - InnoDB Status
  • 19. Часто встречающиеся проблемы - сервер приложений не отвечает при высокой нагрузке даже по SSH - Ограничить количество процессов PHP в настройках PHP-FPM, проверить системные логи на предмет out of memory process kills - Проверить количество процессов PHP, посмотреть соответствие использования CPU на сервере БД и сервере приложений - сервер баз данных работает очень медленно - mytop, show processlist, slow queries log - Explain для популярных запросов - Query cache не всегда хорошо
  • 21. И да, мы ищем таланты :-) hello@cpcs.ws