Недавно мы переместили наши веб-серверы с ящиков 10-летней давности на AWS EC2.
Использование сайта в настоящее время выше (это наш напряженный сезон), и сайт стал намного медленнее, что неожиданно, потому что размеры наших экземпляров намного выше, чем у нас раньше.
У нас довольно маленький сайт, на который за раз попадает всего несколько сотен. Мы запускаем c3. большой экземпляр на нашем веб-сервере и db.m1.large для нашей базы данных RDS MySQL. У нас нет реплик чтения и / или нескольких веб-серверов (балансировка нагрузки). Согласно Google Analytics, у нас было всего 18 106 просмотров страниц за день.
Наши пользователи (внешние и внутренние) продолжают видеть время ожидания сайта в своем браузере. Это практически повсеместно, а не какая-то конкретная страница. СПИСОК ПРОЦЕССОВ MySQL также почти пуст без каких-либо блокировок таблиц или чего-то еще.
Если вы посмотрите нашу статистику в CloudWatch, все должно быть в порядке. У нас очень высокая загрузка ЦП и, как мне кажется, довольно низкий уровень сетевого ввода-вывода. Точно так же и на стороне RDS здесь нет ничего кричащего "узкое место".
Использование EC2 (c3.large)
Использование RDS (db.m1.large)
Есть идеи, как мне решить эту проблему?
Наконец-то выяснили причину наших проблем. В Apache неправильно настроен тайм-аут Keep Alive на 30 секунд. Это в сочетании с чрезмерно агрессивным скриптом AJAX приводило к зависанию сайта и ожиданию соединения.
Превращение KeepAliveTimeout
до 7, а также укрощение AJAX-скрипта вернули все в норму.