Я развернул веб-приложение LAMP в двух отдельных экземплярах AWS (помеченных как prod и test). Оба — t2.micro, но prod — это старый образ Linux, а test — новый образ Linux 2. Используя Chrome браузер Dev Tool:
prod - общее время: от 500 мс до 600 мс
тест - общее время: от 15 секунд до 50 секунд
TTFB на prod составляет менее 100 мс для всех загруженных файлов (скрипт, css, js и т. д.)
TTFB на тесте составляет 3 или более секунд...
Вот ссылка на скриншот инструментов chrome dev:
Результаты синхронизации Chrome Dev Tool
Кроме того, время загрузки каждого файла намного больше на тестовом экземпляре.
У них практически одинаковая конфигурация Apache, одинаковое использование памяти (~ 50%), один и тот же код.
Я пытался выяснить, почему и не могу найти ответ. Это дополнительные проверки, которые я сделал:
- Пробовал strace, и для принятия следующего запроса требуется несколько секунд (3,1 с в примере ниже):
6645 17:28:29 чтение (10, 0x55ff6e9b23f8, 8000) = -1 EAGAIN (ресурс временно недоступен) <0,000007>
...
6645 17:28:32 <... опрос возобновлен> ) = 1 ([{fd=10, revents=POLLIN}]) <3.108490>
- Здесь strace также показывает, что apache очень долго ждет, пока сокет (fd=10) снова станет доступен для записи после отправки файла...
6645 17:28:32 sendfile(10, 11, [76038] => [78918], 69895) = 2880 <0,000009>
6645 17:28:32 poll([{fd=10, events=POLLOUT}], 1, 60000 <незавершенное...>
....
6645 17:28:55 <... опрос возобновлен> ) = 1 ([{fd=10, revents=POLLOUT}]) <23.333877>
- Я попытался загрузить большой файл (3,6 МБ) через scp, и это намного быстрее (~ 1,7 МБ/с). Это говорит мне, что что-то не так с apache или с сокетами, которые использует apache, возможно?
Есть идеи, что происходит на тесте? или это ожидаемая скорость от экземпляра t2.micro EC2?
Спасибо,
Марио.