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

прерывистый огромный TTFB на динамических / статических страницах

У нас есть VPS (2 ГБ ОЗУ / 2 виртуальных процессора). Это обслуживает форум phpBB на PHP 5.6, Centos 6, Apache 2.2. Однако иногда форум очень медленно отвечает. Используя сетевой браузер Chrome, я обнаружил, что TTFB иногда достигает 30 секунд. Как ни странно, эта проблема есть и у кешированных элементов. (см. скриншот)

Я уже пробовал:

Поскольку это не всегда так, единственный способ воспроизвести эту проблему - это спамить F5, хотя я не уверен, что это действительно воспроизводит проблему. Я мог бы в меньшей степени (2s ttfb) воспроизвести это с той же копией страницы в html (удалена динамическая часть).

http://s21.postimg.org/ql6eywn3b/ttfb.png

У меня включен keepalive (максимум 100, 15 секунд), максимальное количество клиентов - 30. Куда мне дальше идти?

Куда мне идти дальше?

Профилирование. Существуют различные инструменты профилирования PHP. Мне нравится blackfire.io - он легко и четко определит любые узкие места, будь то код PHP, запросы MySQL или их комбинация. Без профилирования вы случайно пробуете что-то в темноте.

Вместо F5ing вы также можете провести нагрузочное тестирование с помощью таких инструментов, как ab, yandex tank, Siege и т. Д.

Еще одна вещь, которую нужно сделать, чтобы убедиться, что эта проблема реальна, - это протестировать на webpagetest.org и повторить тест несколько раз (дополнительные настройки, количество запусков). Или через их API.

Проблема была комбинированной:

  • SSD RAID5 обеспечивал скорость 12,5 МБ / с на dd, что намного ниже ожидаемого (в настоящее время: 300-600 МБ / с)
  • брандмауэр также был слишком строгим, так как соединения блокировались до 100 / мин при всплеске 200 / мин. (iptables)

VPS был переведен на более качественную систему ввода-вывода, а брандмауэр не был настроен так строго, и проблема была решена. Я также отключил memcached, поскольку MySQL явно не был узким местом)