Назад | Перейти на главную страницу

Медленный TTFB при включении модулей Apache

Недавно я столкнулся с проблемой, которую все еще не могу решить.

Итак, у меня есть торговая площадка, написанная на WordPress. После процесса разработки я попытался оптимизировать скорость, так как сайт по своей природе загружает много ресурсов.

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

Это что-то обычное или уникальное?

Учитывая, что у вас есть проблемы как с включенным, так и с отключенным сжатием, похоже, что основная причина вашей проблемы не в сжатии, а в другом месте.

Вы объясняете, как меняются симптомы при включении / отключении сжатия. Однако изменение симптомов является лишь незначительным изменением, и этого изменения следует ожидать от большинства схем сжатия.

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

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

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

Вам следует выяснить, почему до отправки последнего байта требуется так много времени. Я предполагаю, что если вы попытаетесь измерить время до последнего байта, оно будет примерно одинаковым со сжатием и без него.

Как нагрузка на сервер?

Если нагрузка на сервер высока, это может означать, что он занят выполнением задач с интенсивным использованием ЦП для получения ответов на запросы, которые он получает. Это также может указывать на то, что серверу требуется много операций ввода-вывода (которые обычно можно уменьшить, добавив больше ОЗУ).

Если нагрузка на сервер низкая и он по-прежнему медленно отвечает, это обычно указывает на то, что он либо ожидает сетевой связи с другим сервером (возможно, сервер БД или DNS-сервер медленно отвечает). Это также может указывать на ошибку в вашем коде.

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