Перейти к содержимому
Статья · Laravel Rescue

Оптимизация Laravel-проекта: если сайт тормозит или остался без разработчика

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

≈ 9 мин чтенияLaravel Rescue

Сайт на Laravel тормозит: где обычно причина

«Тормозит» — это не диагноз, а симптом, и у него есть привычная статистика причин. По симптому часто видно, куда смотреть в первую очередь:

Медленный список: заказы, каталог, отчёт
Где обычно причина
N+1-запросы и отсутствующие индексы: один экран порождает сотни SQL-запросов
Первый шаг
Включить лог медленных запросов и посчитать запросы на страницу
Тормозит всё и постепенно, месяцами
Где обычно причина
Таблицы выросли: выборки без лимитов, «висящие» джобы, разбухшие логи и временные таблицы
Первый шаг
Посмотреть размеры таблиц и самые частые тяжёлые запросы
Зависает при действии: оформление, выгрузка, письмо
Где обычно причина
Синхронная работа в запросе: почта, генерация файлов, обращение к внешнему API
Первый шаг
Найти, что выполняется в запросе, и вынести в очередь
Падает под нагрузкой, в остальное время терпимо
Где обычно причина
Исчерпаны воркеры PHP-FPM или соединения с базой; блокировки на горячих таблицах
Первый шаг
Метрики сервера и базы в момент пика, а не «в среднем»
Медленно после переезда или обновления
Где обычно причина
Выключенный OPcache, отсутствие кэша конфигурации и роутов, debug-режим на проде
Первый шаг
Проверить конфигурацию окружения — это быстрые победы

«Взять сервер помощнее» — самый дорогой и короткоживущий способ: N+1 съедает любое железо, просто чуть позже. Апгрейд сервера оправдан, когда замеры показали, что упирается именно железо, — на практике это заметно меньшая часть случаев.

Оптимизация запросов и не только: как работает инженер

Порядок работ важнее конкретных приёмов — он защищает от «оптимизировали, а стало хуже»:

  1. 1Замер до: лог медленных запросов, число SQL-запросов на ключевых страницах, время ответа страниц, метрики сервера. Без этой точки отсчёта любое «стало быстрее» — ощущение, а не результат.
  2. 2Оптимизация запросов: N+1 закрывается жадной загрузкой связей, индексы строятся под реальные запросы из лога, тяжёлые выборки получают лимиты и пагинацию.
  3. 3Кэширование расчётливо: справочники и редко меняющиеся данные — да; кэш поверх медленного запроса вместо его починки — нет, это откладывание проблемы.
  4. 4Вынос тяжёлого из запроса: письма, выгрузки, интеграции и генерация документов уходят в очереди с повторными попытками и журналом ошибок.
  5. 5Гигиена окружения: OPcache, кэш конфигурации и роутов, выключенный debug, ротация логов — набор быстрых побед, который часто даёт заметный эффект за один день.
  6. 6Замер после — на тех же страницах и тех же данных. Разница «до и после» — единственное честное доказательство ускорения.

Поэтому я не обещаю «ускорим в N раз» до замеров: корректная работа с производительностью — это найденные узкие места и измеренная разница, а не обещание. Что нашли, что изменили, что стало — всё фиксируется в отчёте.

Остался без программиста: что делать в первую неделю

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

  1. 1Соберите доступы: сервер, панель хостинга, домен и DNS, база данных, репозиторий кода, почтовые ящики системы, платёжные и интеграционные кабинеты. Всё — на аккаунты компании, не на личные.
  2. 2Найдите код: есть ли репозиторий и совпадает ли он с тем, что работает на сервере. «Код только на проде» — частая и решаемая ситуация, но о ней нужно знать до правок.
  3. 3Проверьте бэкапы: не «делаются ли», а восстанавливается ли из них система. Непроверенный бэкап — это лотерея, а не бэкап.
  4. 4Зафиксируйте «как есть»: не обновляйте версии, не чистите «лишние» файлы, не давайте никому править прод сгоряча — работающая система в неизвестном состоянии ценнее сломанной в известном.
  5. 5Соберите знания: документация, переписка с прошлым разработчиком, схемы, договорённости. Если расстались нормально — договоритесь об часе консультации, это дешевле недели раскопок.
  6. 6И только теперь ищите исполнителя — уже не «срочно кого-нибудь», а под понятную задачу: войти в проект через аудит.

Главная ошибка этой недели — пустить первого откликнувшегося «всё быстро поправить» в прод без бэкапов и репозитория. Вторая по частоте — согласиться на «здесь всё плохо, надо переписывать» до того, как кто-то реально посмотрел код: иногда переписать и правда дешевле, но это вывод из аудита, а не с порога.

Аудит Laravel-проекта: как безопасно войти в чужой код

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

На выходе — отчёт: список найденных проблем с разделением на «критично / важно / можно отложить», быстрые победы, которые безопасно сделать первыми, карта технического долга и план стабилизации по этапам. Отдельный честный пункт — вердикт, можно ли брать проект на поддержку и не дешевле ли строить новую систему рядом.

Как выглядит отчёт аудита — пример

На странице услуги — пример отчёта на синтетических данных: найденные проблемы с уровнями риска, медленные запросы с таймингами, состояние бэкапов и чек-лист деплоя. Такой же по структуре отчёт получает владелец проекта после аудита.

План спасения: от быстрых побед до сопровождения

После аудита работа выстраивается по ступеням — каждая закрывает свой уровень риска, и остановиться можно после любой:

  1. 1Быстрые исправления: высокий риск при небольшом объёме — бэкапы, логи, критичные ошибки, настройки окружения, очевидные SQL-проблемы, зависшие джобы.
  2. 2Антикризисный спринт: безопасный деплой, проверка восстановления, закрытие критичных сбоев и самых опасных узких мест — проект перестаёт быть пожаром.
  3. 3Плановая стабилизация: разбор кода, базы, зависимостей, очередей и инфраструктуры по приоритетам — если проект нужно развивать дальше.
  4. 4Сопровождение по SLA: мониторинг, реакция на инциденты в срок, обновления и плановые доработки — проект живёт с человеком, который его знает.

Rescue нужен не всем. Если система не критична для бизнеса, а правка локальная и понятная — аудит избыточен, задачу закроет любой аккуратный разработчик за пару часов. И обратное: если аудит показывает, что проект дешевле переписать, чем стабилизировать, я так и напишу в отчёте и предложу спроектировать новую систему — вместо того чтобы месяцами продавать вам стабилизацию безнадёжного кода.

Доработка и поддержка сайта на Laravel после стабилизации

Стабильный проект — это не финал, а нормальный режим жизни. Доработка сайта на Laravel при выстроенном процессе выглядит буднично: задачи идут через staging, изменения выкатываются с возможностью отката, версии обновляются планово, а не «когда совсем прижмёт».

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

Если на стабилизированном проекте дальше нужны новые контуры — интеграции с 1С и API, личные кабинеты, внутренние системы — они строятся уже на здоровом фундаменте: с деплоем, бэкапами и staging, а не поверх неизвестности.

Сколько стоит аудит и стабилизация Laravel-проекта

Форматы выстроены так, чтобы можно было начать с малого и остановиться на любом шаге:

Быстрый аудит
Когда это нужно
Понять основные риски и ближайшие исправления
Ориентир
от 30–60 тыс. ₽
Глубокий аудит
Когда это нужно
Проверить код, базу, сервер, безопасность и деплой
Ориентир
от 70–120 тыс. ₽
Антикризисный спринт
Когда это нужно
Закрыть критичные риски после аудита
Ориентир
от 120–250 тыс. ₽
Стабилизация за месяц
Когда это нужно
Привести проект к управляемому состоянию
Ориентир
от 250–500 тыс. ₽
Наблюдение и бэкапы
Когда это нужно
Мониторинг, бэкапы с проверкой восстановления, дежурная реакция
Ориентир
от 25–40 тыс. ₽/мес
Поддержка и развитие
Когда это нужно
Регулярные доработки, контроль стабильности
Ориентир
от 60–150 тыс. ₽/мес

Это ориентиры, а не смета: финальная оценка зависит от размера проекта, состояния кода, базы, сервера и критичности системы для бизнеса. Для работы понадобятся репозиторий, доступы и ответственный человек с вашей стороны — production я не правлю вслепую. Подробнее — на странице Laravel Rescue.

Частые вопросы

Сайт на Laravel тормозит — с чего начать? +

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

Остался без программиста — что делать в первую очередь? +

Собрать контроль над активами: доступы к серверу, домену, базе и репозиторию — на аккаунты компании; убедиться, что код в репозитории совпадает с работающим на сервере; проверить, что из бэкапа реально можно восстановиться. Ничего не обновлять и не «чистить» сгоряча. Только после этого искать исполнителя — под задачу «войти в проект через аудит», а не «срочно кого-нибудь».

Сколько стоит аудит Laravel-проекта? +

Быстрый аудит — от 30–60 тыс. ₽: основные риски и ближайшие исправления. Глубокий — от 70–120 тыс. ₽: код, база, сервер, безопасность, деплой, бэкапы. На выходе — отчёт со списком проблем по уровням риска, быстрыми победами и планом стабилизации, а также честный вердикт: развивать проект или дешевле строить новый рядом.

Можно ли дорабатывать сайт на Laravel без старого разработчика? +

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

Вы гарантируете, что после оптимизации сайт ускорится? +

Без замеров — нет, и настороженно относитесь к тем, кто гарантирует. Честный процесс выглядит так: замер «до» на конкретных страницах, поиск узких мест, исправления, замер «после» на тех же данных. Разница в цифрах — единственное настоящее доказательство ускорения; она и фиксируется в отчёте.

Первый шаг

Проект тормозит, падает или остался без присмотра? Опишите ситуацию

Расскажите, что за система, что болит и насколько она критична для бизнеса. Я подскажу, какой аудит подойдёт и что можно сделать первым без лишнего риска. Пароли и production-доступы в первом сообщении не нужны.

Не присылайте пароли, токены, API-ключи и production-доступы в первом сообщении.

Мы используем cookie: технические — для работы сайта, и аналитические (Яндекс Метрика) — для обезличенной статистики посещений. Аналитика включается только с вашего согласия. Подробнее