Оптимизация производительности сайтов ( 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 может буферизовать ответ от истинного сервера и затем передать его клиенту, так что вы можете увидеть задержку от буферизации, если она включена.

Задержка в ожидании первого байта от сервера может быть одной из нескольких причин, в том числе:

  1. Задержка в поисках DNS
  2. Задержка запуска сервера TCP-сессии
  3. Задержка отправки сервером запроса на сервер
  4. Задержка отправки сервером данных после получения запроса.

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

Если предположить, что у вас нет проблем с DNS, задержкой или пропускной способностью, это звучит так, как будто серверу может потребоваться много времени для генерации вывода страницы, либо потому, что он перегружен, либо потому, что приложение просто много делает и тратит время на визуализацию страницы. WordPress известен тем, что он довольно болтлив с базами данных (я видел, что домашние страницы WordPress делали 500+ дБ запросов раньше), поэтому я хотел бы получить один из множества плагинов для профилирования php и выяснить, генерирует ли приложение страницу в приемлемое количество времени. Если приложение работоспособно, а сервер все еще не обслуживает запросы своевременно, то это больше указывает на конфигурацию веб-сервера или проблему загрузки сервера.

Другие вопросы по тегам