Upload
it61
View
131
Download
2
Embed Size (px)
Citation preview
1
ОтдаемОтдаем страницыстраницы быстреебыстрееилиили каккак вписатьсявписаться
вв требованиятребования GGooooggllee
Backend meetup / MESTOРостов-на-Дону, 2016
2
Привет, меня зовутЕвгений.
И я хочу рассказатькак сделать ваши сайты
быстрее.
3
Откуда все это?
15 лет с знакомства Open Sourceпримерно столько же сисадминC/C++, PHP, Ruby, Shell8 лет "техдиром" в веб-студии
А еще очень много часов чтениявсего, что показалось интересным.
4
ну и спорить с Google вообще без вариантов ;)ваши страницы должны отвечать за 0.2 секундыу вас должен быть HTTPS на сайтепроверяйтесь в PageSpeed Insights и исправляйтепользуйтесь "Developer Tools" в Google Chrome
Что от меня хочет Google?
«Don't be evil» (c) Paul Buchheit, Google
5
Почему скорость важна?
0,5с задержки снижают прибыль на 1,1-1,4% (Bing)0,1с задержки уменьшает выручку на 1% (Amazon)0,5с задержки уменьшают просмотры на 3% (Facebook)2,16с уменьшают количество загрузок на 15,4% (Mozilla)
«Промедление смерти подобно» (c) Петр Первый
6
Что с медленными сайтами?
как долго вы сами ждете?теряют аудиториюпадает конверсиятеряют позиции в поисковикахрадуют конкурентов
«Если вы видите, что ваш конкуренттонет, возьмите пожарный шланг изасуньте ему в рот»
(c) Рэй Крок
7
Про "Скорость"
загрузка страницы "под капотом"неожиданные причины для тормозовнемного магии на стороне сервератюним код и верстку, кэшируемкак быть в особо "тяжелых" случаях
Дальше по тексту ожидается
"капитанство" ¯\_(ツ)_/¯
8
Про "Скорость" / Загрузка
вводится адрес в браузереищем IP адрес сервера в DNSподключаемся к серверу по TCPHTTPS - валидность и параметрытащим страницу (TTFB) и ресурсы
«Самые лучшие инвестиции — в знания» (с) Бенджамин Франклин
9
Про "Скорость" / Где тормоза?
открываем Network в DevTools (Chrome)запрашиваем нужную страницувнимательно смотрим на waterfallпроверяем вкладки timing
«Очевидное очень часто ускользаетот внимания многих людей»
(c) Джеффри Дивер
10
Про "Скорость" / Неожиданности
законы физики не обмануть (RTT)где датацентр и где аудитория?DNS сервера могут лагать или даже "лежать"кстати, HTTPS "тормозит" ваш сайтлимиты браузеров по коннектам
«Признаваться в незнании — одно излучших и вернейших доказательствналичия разума» (c) Мишель де Монтень
11
Про "Скорость" / Магия в Nginx
для начала ставим Nginxдобавляем SPDY или HTTP/2 (на будущее)OCSP stapling и Sessions в SSL ( )прописываем mime-types в gzipрасставляем нужные "expires"
ssllabs.com
Тут респект Игорю Сысоеву!
12
Про "Скорость" / Генерация страниц
профилируем скрипты и ищем bottleneck'sкорректируем Cache-Control и Expiresкэшируем страницы (файлы/memcached/etc)кэшируем "каркас" и тащим остальное Ajax'ом
«Между успехом и неудачей лежитпропасть, имя которой "у меня нетвремени"» (c) Франклин Филд
13
Про "Скорость" / Работа с базой
смотрим что интересного в slow логахрасставляем индексы в базепроверяем explain и оптимизируем запросыпроверяем нет ли блокировок в базе
xxx: На моей работе самаястрашная фраза это: "ребята, закакую дату у нас есть бэкап базыданных?"
(c) bash.org.ru
14
Про "Скорость" / Статика и контент
минифицируем js и css, пережимаем картинкисклеиваем и сокращаем количество запросовтестируем в PageSpeed Insights и исправляемдобавляем , если ленивоподключаем CDN для статики и контента
ngx_pagespeed
«Или не берись, или доводи до конца» (c) Овидий
15
Про "Скорость" / Тюнинг
задаем разумное значение "idle" процессовunix-сокет быстрее и "дешевле" TCPдобавляем keepalive для бэкендадумаем про "persistent connections" с базойподбираем keepalive для браузеров
«Non est finis perfectionis»
16
Про "Скорость" / На вырост
добавляем кэширование в Nginxмониторим сервер(а) и метрики софтадобавляем бэкенды для генерации страницреплики базы для "чтения" или кластерSSL-терминация ближе к посетителю
- Nobody is perfect.- I'm nobody.
17
Про «типовые ошибки»
не все "лечится" повышением цифр в конфигахне храните миллионы файлов в одной папкесимулируйте рост данных в 10-20 разself-hosted или внешний мониторинг (NewRelic?)
«Если какая-то неприятностьможет произойти, онанепременно случится» Закон Мерфи
дальше в "Типовых ошибках веб-разработчиков"
18
[email protected]@osshelp.ruhttps://osshelp.ru/https://osshelp.ru/