Оптимизация производительности сайтов ( nginx/mysql/wordpress)
Я пытался оптимизировать производительность моего нового веб-сайта, моя конфигурация - wordpress, работающий на Ubuntu 11.04 1G VPS с nginx/php-fpm/mysql. Я использовал кэширование страниц, браузерное кэширование, чтобы сделать это быстрее. Но есть кое-что, что мне нужно понять: когда я запускаю тест скорости с использованием различных онлайн-инструментов или firebug, при первом запросе GET возникает узкое место, это занимает 3 или 4 секунды ожидания первого байта с сервера. после этого скорость загрузки сайта приемлема. Чтобы объяснить это по-другому, например, если вы откроете сайт из firefox, вы увидите строку состояния, в которой "Ожидание mydomain.com.." застрянет на 3-4 секунды. Я хочу понять, каковы факторы, которые контролируют это время ожидания, и рекомендации по оптимизации.
2 ответа
Используете ли вы функции прокси в Nginx? nginx может буферизовать ответ от истинного сервера и затем передать его клиенту, так что вы можете увидеть задержку от буферизации, если она включена.
Задержка в ожидании первого байта от сервера может быть одной из нескольких причин, в том числе:
- Задержка в поисках DNS
- Задержка запуска сервера TCP-сессии
- Задержка отправки сервером запроса на сервер
- Задержка отправки сервером данных после получения запроса.
Инструменты разработчика Chrome обычно сообщают вам, какое из них является узким местом, и только некоторые из них обязательно вызваны настройками сервера. Я бы выяснил, что из этого вызывает задержку, и работал бы над этим.
Если предположить, что у вас нет проблем с DNS, задержкой или пропускной способностью, это звучит так, как будто серверу может потребоваться много времени для генерации вывода страницы, либо потому, что он перегружен, либо потому, что приложение просто много делает и тратит время на визуализацию страницы. WordPress известен тем, что он довольно болтлив с базами данных (я видел, что домашние страницы WordPress делали 500+ дБ запросов раньше), поэтому я хотел бы получить один из множества плагинов для профилирования php и выяснить, генерирует ли приложение страницу в приемлемое количество времени. Если приложение работоспособно, а сервер все еще не обслуживает запросы своевременно, то это больше указывает на конфигурацию веб-сервера или проблему загрузки сервера.