Очень низкие значения запросов в секунду в результате теста Apache ab на сервере nginx

Я тестирую свой новый сайт на следующей настройке * 2 экземпляра m1.large ec2 в качестве веб-сервера за эластичным балансировщиком нагрузки * на обоих веб-серверах установлен memcache/apc/nginx/php-fpm * 1 экземпляр m1.large ec2 для mongo db, когда Я запускаю это с удаленного сервера ab -n 100 http://beta.domain.com/ и получаю следующие результаты

Server Software:        nginx/1.1.19
Server Hostname:        beta.domain.com
Server Port:            80

Document Path:          /
Document Length:        50817 bytes

Concurrency Level:      1
Time taken for tests:   127.032 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      5117100 bytes
HTML transferred:       5081700 bytes
Requests per second:    0.79 [#/sec] (mean)
Time per request:       1270.322 [ms] (mean)
Time per request:       1270.322 [ms] (mean, across all concurrent requests)
Transfer rate:          39.34 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       21   42 100.4     26    1018
Processing:  1119 1228  69.4   1218    1488
Waiting:      941 1016  41.8   1015    1159
Total:       1144 1270 121.6   1246    2199

Percentage of the requests served within a certain time (ms)
  50%   1246
  66%   1271
  75%   1281
  80%   1295
  90%   1364
  95%   1483
  98%   1547
  99%   2199
 100%   2199 (longest request)

Вероятность попадания БТР составляет около 98%. Кроме того, я проверяю файл журнала memcached, выполняя этот тест, и вижу, что ab поражает оба сервера и набирает значения на memcached (все попадания, без промахов). Но все равно значение RPS равно 0,79. Разве это не очень низко? Я упускаю суть?

ИЗМЕНИТЬ

Также весь статический контент (css, js, изображения) обслуживается с Amazon S3 в формате gz и имеет срок действия 1 год.

*ИЗМЕНИТЬ 2 *

Я провел тот же тест с параметром -c 50 и вот результат

Concurrency Level:      50
Time taken for tests:   49.332 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      5118200 bytes
HTML transferred:       5082800 bytes
Requests per second:    2.03 [#/sec] (mean)
Time per request:       24666.145 [ms] (mean)
Time per request:       493.323 [ms] (mean, across all concurrent requests)
Transfer rate:          101.32 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       20   33  10.0     30      58
Processing:  7656 20521 6139.1  21495   29328
Waiting:     7538 20415 6131.9  21407   29243
Total:       7687 20554 6140.3  21540   29380

Percentage of the requests served within a certain time (ms)
  50%  21540
  66%  23255
  75%  25744
  80%  26204
  90%  27414
  95%  28098
  98%  29259
  99%  29380
 100%  29380 (longest request)

** Генерация нагрузки **

Я предполагаю, что Эб делает это, не так ли? Извините, я совсем новичок в бенчмаркинге :) Я также добавил -c 50 и снова запустил тест. См. результаты выше.

** Тестовая страница **

На этой странице перечислены 20 продуктов с изображением, описанием и т. д. Выполняет некоторые внутренние вычисления, но все результаты кэшируются в memcache, поэтому на самом деле они никогда не попадают в базу данных (mongo). Я вижу это из файла журнала memcache.

** Что-то еще **

Вот результат vmstat на одном из серверов во время абтеста

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0 7161224  21028 199896    0    0    26    16   29   30  1  0 99  0

и iostat

Linux 3.2.0-29-virtual  10/02/2012  _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.67    0.00    0.31    0.15    0.34   98.54

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvdap1            4.25        48.00        32.40     178001     120160
xvdb              0.17         0.54         0.00       1993          4

person Optimus    schedule 02.10.2012    source источник


Ответы (1)


Является ли это низким или нет, зависит от ряда факторов.

Генерация нагрузки

Как вы создаете нагрузку? Если вы отправляете один запрос за раз, это значение не может быть необоснованным. Сколько одновременных запросов вы отправляете?

Что делает проверенная страница?

Насколько тяжела обработка на этой странице? Сколько времени занимает полная загрузка страницы без какой-либо нагрузки на систему?

Что еще проверить

Предполагая, что оба из вышеперечисленных вопросов не вызывают проблем, посмотрите и посмотрите, какие ресурсы облагаются налогом на серверах.

Использовать

vmstat

йостат

чтобы выяснить, где вы теряете производительность. Процессор привязан? Сколько стоит очередь на диск? Вы используете всю доступную память?

Специально для AWS

Если у вас есть какие-либо значительные операции ввода-вывода, вы обнаружите, что хранилище EBS не совсем быстрое. Решением этой проблемы всегда было объединение нескольких томов EBS в программный RAID.

http://www.mysqlperformanceblog.com/2009/08/06/ec2ebs-single-and-raid-volumes-io-bencmark/

Недавно AWS выпустила новую услугу под названием Provisioned IO, которая гарантирует определенный объем дисковых операций ввода-вывода из тома EBS. Это дороже, но не требует специальной настройки для использования (необходимо выбрать соответствующий вариант при создании тома EBS).

person Eric J.    schedule 02.10.2012