Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

Двадцать секунд до корзины: три причины одного симптома

Оценить статью

Жалоба была общая: «сайт тормозит, корзина и оформление особенно». Поиск по ощущениям в таких случаях не работает, поэтому начали с замеров: включили лог медленных страниц и разобрали логи веб-сервера по времени ответа.

Причина первая: права на кэш

Часть служебных скриптов запускали на сервере от имени root, и созданные ими файлы кэша получили владельца root. Веб-сервер работает от другого пользователя и перезаписать их не мог — кэш фактически перестал работать на весь сайт. Вернули владельца и зафиксировали правило: скрипты на этом сервере запускаются только от пользователя веб-сервера.

Причина вторая: расчёт персональной цены

Цена клиента считается из справочника на 23 388 записей, и выборка шла перебором без подходящего индекса. Добавили индекс и кэширование в рамках запроса: расчёт цены одного товара ускорился с 0,06–0,09 секунды до 0,0019 — примерно в сорок раз. На странице с сотней товаров это решающая разница.

Причина третья: чужой упавший сервер

В шаблоне стоял компонент, который на каждой сессии обращался к внешнему сервису разработчика темы. Сервис лежал, таймаут не был задан, и сайт честно ждал ответа до двадцати секунд. Поставили жёсткий таймаут в три секунды и запомнили неудачу на час, чтобы не стучаться повторно.

Результат

Корзина и оформление открываются за секунды, кэш снова работает, расчёт цен перестал быть узким местом. Вывод, полезный для любого проекта на готовом шаблоне: обращения к внешним сервисам внутри темы — мина, которая срабатывает в самый неподходящий момент, и обезвреживать её нужно до того, как чужой сервер упадёт.

Статья была полезна?

Оцените первым — так другие читатели поймут, стоит ли читать