65  /  96

Обеспечение отказоустойчивости

Просмотров: 2178 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 25.09.2015

При переносе бизнеса в интернет каждый час простоя несет в себе потерю заказов и репутации, неэффективность рекламных кампаний и переиндексаций поисковыми роботами, т.е. стоит зачастую немалых денег.

Сайт должен работать стабильно, без ошибок и задержек. По результатам исследования компании 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 использование стандартных возможностей Монитора Производительности:


Список ссылок по теме:

Распределенная отказоустойчивая система хранения статичных данных - доклад на конференции FailOver Conference Украина.

Оптимизация затрат на отказоустойчивость - доклад на FailOver Conference.

Оптимизация затрат на отказоустойчивость - доклад на FailOver Conference.

Как снизить нагрузку на высокопосещаемый проект? - доклад на FailOver Conference.




3
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии