Обслуживание статического сайта с помощью nginx. Время отклика более 600 миллисекунд. В чем дело?
Я работаю в WordPress-блоге с nginx http, кэшированным для более чем 99% запросов с временем жизни кеша 2 дня. Вот веб-страница с сайта. Веб-страницы имеют довольно много изображений и поэтому загружаются лениво. Средний размер страницы составляет всего 1 МБ.
Средний размер ответа составляет 10 КБ
С помощью Speedcurve мой TTFB находится на медиане 0,6 секунды.
Почему это так высоко?
Я поддерживаю cloudflare, и все статические ресурсы, такие как JS, CSS и изображения, имеют версии и кешируются из cloudflare.
Мой конфиг nginx имеет
sendfile on;
# https://forum.nginx.org/read.php?2,280434,280434#msg-280434
tcp_nopush on;
tcp_nodelay on;
#https://support.cloudflare.com/hc/en-us/articles/212794707-General-Best-Practices-for-Load-Balancing-at-your-origin-with-Cloudflare
#https://www.nginx.com/blog/tuning-nginx/
keepalive_timeout 300s;
keepalive_requests 10000;
у меня тоже есть
initcwnd установлен в 10, initrwnd 10 и ipv4.tcp_slow_start_after_idle=0
Вот сообщение Cloudflare о времени отклика от CF до источника
Вот мои результаты webpagetest.org для соединения 2G
Статический сайт также сбалансирован по нагрузке на две машины. Один во Фремонте и один в Мумбаи, где Cloudflare выполняет географическую маршрутизацию.
Почему мой TTFB такой длинный и что я могу сделать, чтобы уменьшить его?
2 ответа
Я перезапустил тест из Мумбаи без ограничения пропускной способности и получил TTFB 237 мс для страницы и 7 мс для статического ресурса.
Вы ограничили тест до 2G, что является очень низкой пропускной способностью.
Таким образом, проблема не в веб-сайте, а в ограничениях, которые вы наложили на тест.
Получаете ли вы те же результаты, пропуская Cloudflare? Что делать ab
на местном уровне? Даже с мускулистым соединением я получаю ~200 мс TTFB. Возможно, простое соединение между краем Cloudflare и вашим источником занимает столько времени из-за расстояния.
Вы можете включить полный кеш страниц, и это немедленно улучшит ваш TTFB.