Просмотров: 19582
Дата последнего изменения: 14.02.2023
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
4
5
Обеспечение отказоустойчивости
При переносе бизнеса в интернет каждый час простоя несет в себе потерю заказов и репутации, неэффективность рекламных кампаний и переиндексаций поисковыми роботами, т.е. стоит зачастую немалых денег.
Сайт должен работать стабильно, без ошибок и задержек. По результатам исследования компании GoMez, занижение скорости загрузки страниц на 1 секунду снижает конверсию на 7%, а количество просмотров - на 11%.
Примечание: исследование Strategic Research Institute показало, что 60% предпринимателей после утраты всех данных прекращают свою предпринимательскую деятельность в течении полугода.
Обеспечение отказоустойчивости критично для проектов, ключевым моментом деятельности которых является высокий уровень доверия со стороны пользователей, Business critical application: веб-сервисы, использующиеся в работе, CRM, бухучет, таск-менеджмент, почта, Битрикс24 и так далее.
Ключевым моментом отказоустойчиваости является система мониторинга.
В контексте отказоустойчивости техническое задание на сайт должно включать в себя:
- количество хитов в сутки;
- скорость загрузки главной страницы сайта при указанном количестве хитов;
- среднее время загрузки всех страниц в сутки;
- процент страниц с временем загрузки более n сек;
- допустимый процент ошибок;
- допустимое время простоя;
- время реакции;
- перечень возможных отказов с приоритетами;
- прогноз объема и характера нагрузки;
- способы реакции на отказы и аварии
Основные принципы
Основные принципы разработки и эксплуатации, обеспечивающие высокую отказоустойчивость:
- отказ от синхронного использования в коде внешних ресурсов;
- не оперировать в памяти большими массивами данных;
- контроль памяти при работе с картинками;
- анализ логов NGINX, Apache: awk, grep;
- ведение дополнительных логов - CPU user/system%, memory usage, логи приложения и компонентов;
- фиксирование в логах NGINX время отработки upstream -
$upstream_response_time
;
- исследование причин медленной работы PHP – php-fpm slowlog;
Важно! Актуально для работы PHP в режиме PHP-FPM.
- считывание трейсов страниц, помогающих обнаружить медленно отрабатывающие скрипты:
ini_set('xdebug.collect_params', 3);
xdebug_start_trace();
…
xdebug_stop_trace();
TRACE START [2013-01-29 14:37:13]
0.0003 114112 -> {main}() ../trace.php:0
0.0004 114272 -> str_split('Xdebug') ../trace.php:8
0.0007 117424 -> ret_ord('X') ../trace.php:10
0.0007 117584 -> ord('X') ../trace.php:5
0.0009 117584 -> ret_ord('d') ../trace.php:10
…
XDebug - свободная библиотека, призванная максимально упростить отладку php-скриптов. Следует иметь в виду, что его использование, в отличие от
XHProf, снижает производительность. Не рекомендуется применять на "боевых" серверах.
Также о причинах и способах устранения медленной загрузки страниц вы можете прочитать в блоге.
- сбор и анализ ошибок SQL:
define("LOG_FILENAME", "/var/log/db_error.log");
- наблюдение за запросами в БД (лог медленных запросов MySQL, innotop);
- резервные копии файлов и базы данных и умение быстро из них восстанавливаться;
- real-time мониторинг;
- резервирование критичных узлов.
- при разработке на Bitrix Framework использование стандартных возможностей Монитора Производительности:
![](/images/hl-projects/exploitation/server_bd.png)