У меня проблема с AWS. Я использую службу эластичного контейнера, созданную по ссылке https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html Тип экземпляра - t2.xlarge (https://aws.amazon.com/ec2/instance-types/). Внутри контейнера у меня есть конфигурация nginx + php7.0-fpm. Конечно, я тестировал то же самое, используя apache2 вместо nginx. В остальном все было так же.
Я использую loader.io (https://loader.io/) и ApacheBench (https://en.wikipedia.org/wiki/ApacheBench) для проведения нагрузочного тестирования.
Как видно из списка типов экземпляров, экземпляр, который я использую, должен иметь некоторую нагрузку. Но когда я его протестировал, результаты были немного шокирующими. Эта машина действительно выполняла 1500 запросов / с в программе PHP Hello World. По сути, это была простая команда echo для всего файла. Мне удалось получить такие же результаты на моем персональном компьютере (MacBook Pro 13, середина 2014 г.), который, по имеющимся характеристикам, должен быть менее мощным, чем t2.xlarge. Кроме того, для экземпляра AWS были доступны почти все ресурсы контейнера Docker и служб внутри, в то время как на моем Mac параллельно работала куча другого «тяжелого» программного обеспечения.
Путешествуя по сети, я нашел несколько примеров, когда у людей был результат, аналогичный моему, при использовании меньших экземпляров, чем у меня. (например https://stackoverflow.com/questions/32495636/is-there-any-limitation-on-ec2-machine-or-network)
Мне было интересно, встречал ли кто-нибудь из вас что-нибудь подобное? Это нормальное поведение? Могу ли я добиться лучших результатов?
По этой ссылке https://www.dropbox.com/s/22antrony35fhq0/Archive.zip?dl=0 вы можете скачать мою конфигурацию fpm и nginx (и apache).
Надеюсь, кто-нибудь может мне помочь.
РЕДАКТИРОВАТЬ:
Я выяснил, что, используя ту же машину EC2 без ECS, я могу получить примерно в 10 раз больше запросов в секунду, чем при использовании ее в ECS.
Может кто что нибудь знает об этом? Может ли Docker так сильно снизить производительность? Или это могло быть из-за плохой реализации от AWS?
Троттлинг экземпляров t2 (с возможностью взрыва для обработки всплесков) - есть некоторые обсуждения этого Вот, поэтому, возможно, вы захотите изучить другой тип экземпляра (например, c5.large) или неограниченный режим t2.
Убедитесь, что у вас есть opcache php включен в вашем php.ini и что вы используете php7 +, так как это имеет большое значение для примеров типа 'hello world'. Также имейте в виду, что они часто не очень хорошие тесты, в Google есть много хороших скриптов тестов, которые могут лучше измерить реальную производительность.