25
HighLoad и PHP Aleksey Ivankin CTO @ 908.vc 400 000 daily average users 16 000 000 request per day

Алексей Иванкин: Highload + PHP

Embed Size (px)

Citation preview

HighLoad и PHP

Aleksey IvankinCTO @ 908.vc

400 000 daily average users16 000 000 request per day

Как и у кого это происходит?Рост в 5-10 раз в течении нескольких дней или недель

1M pageview в сутки и более

Почему PHP?Низкий порог входа и нас много

Rasmus Lerdorf: PHP — просто инструмент, с помощью которого можно сколотить классные штуки. И мне нравится именно это — то, что создано с помощью PHP.

Я никогда не работал в компании, производящей инструменты; много лет я проработал в Yahoo, потом в WePay, сейчас — в Etsy. Это компании, которые

работают для нормальных, обычных людей, и PHP — их неотъемлемая часть. Это инструмент, которым мы пользуемся, чтобы делать вещи для реальных людей.

Родовые проблемы PHP•Интерпретируемый язык —> компилятор в C++ (Facebook HPHPc)

• Born to die —> демоны (phpDaemon)•Многопоточность —> нет в коробке (pthreads)

• OOP overhead —> Функциональное программирование

Как это выглядит со стороны ваших пользователей

Как это видит ваш системный администратор

Don't panic

• Инструменты

• Домашнее задание

• Архитектурные и не очень подходы

• Треугольник "Деньги" — "Скорость продукта" — "Скорость разработки"

Инструменты — когда нет времени

Инструменты — Elastic Search+Kibana

Инструменты — Pinba + IntaroPinboard

Инструменты — AB Apache + Zabbix

Домашняя работа• Разделение веб-сервера на легкий и тяжелый (Nginx

+Apache, Nginx+PHPFPM)

• Роли Application Server / DB Server / Static File Server

• Распределенное файловое + единое сессионное хранилище = уход от монолитности + запуск в облаке

• Кеширование

• Денормализация, дублирование данных (хранение данных в разных хранилищах в зависимости от видов запросов) = SQL + NoSQL + Sphinix/ES + ...

Деньги

Качество кодаСкорость разработки

Скоростьбекенда

Action plan1. Вычисление скорости элементов системы в

бизнес терминах

2. Нахождение узких мест или ненужной функциональности или недостатков архитектуры

3. Критический эксперимент и анализ результатов

4. Пункт №1

Делаем timeline в бизнес терминах

Know your placeHTML отдался за 250мс, страница показалась на

2500мс

Идея первая и последняя — отдавать страницу целиком из кеша

Решение проблем сессий, cookies, кастомизаций, прогрева, инвалидации, приветствий пользователя.

Идем дальше — толстый клиентНо для SEO все равно придется генерировать HTML

Идем дальше — Nginx SSI многопоточность

Идем дальше — репликация

Идем дальше — очереди

Идем дальше — используем кеш xcache/apc вместо memcache

Идем дальше — сервисная архитектура

Идем дальше