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

Разница в производительности: локальный компьютер против среднего экземпляра Amazon

Я вижу резкую разницу в матрице производительности, когда запускаю ее с тестом apache (ab) на моем локальном компьютере VS production, размещенном в средний экземпляр amazon. Одинаковые одновременные запросы (5) и одинаковое общее количество запросов (111) были запущены для обоих. У Amazon лучше память, чем у моей локальной машины. Но на моем локальном компьютере 2 процессора против 1 процессора в m1.medium. В настоящий момент у меня очень низкая скорость интернета, я получаю скорость передачи 25,29 Кбит / с. Как я могу улучшить производительность?

Не знаю, как интерпретировать Connect, Processing, Waiting и total в выводе ab.

Here is Localhost:

Server Hostname:        localhost
Server Port:            9999

Document Path:          /
Document Length:        7631 bytes

Concurrency Level:      5
Time taken for tests:   1.424 seconds
Complete requests:      111
Failed requests:        102
   (Connect: 0, Receive: 0, Length: 102, Exceptions: 0)
Write errors:           0
Total transferred:      860808 bytes
HTML transferred:       847155 bytes
Requests per second:    77.95 [#/sec] (mean)
Time per request:       64.148 [ms] (mean)
Time per request:       12.830 [ms] (mean, across all concurrent requests)
Transfer rate:          590.30 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       1
Processing:    14   63  99.9     43     562
Waiting:       14   60  96.7     39     560
Total:         14   63  99.9     43     563


And this is production:
Document Path:          /
Document Length:        7783 bytes

Concurrency Level:      5
Time taken for tests:   33.883 seconds
Complete requests:      111
Failed requests:        0
Write errors:           0
Total transferred:      877566 bytes
HTML transferred:       863913 bytes
Requests per second:    3.28 [#/sec] (mean)
Time per request:       1526.258 [ms] (mean)
Time per request:       305.252 [ms] (mean, across all concurrent requests)
Transfer rate:          25.29 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      290  297  14.0    293     413
Processing:   897 1178  63.4   1176    1391
Waiting:      296  606 135.6    588    1171
Total:       1191 1475  66.0   1471    1684

Во-первых, наличие 2 ЦП против 1 ЦП определенно большая разница. В зависимости от множества других факторов, одно это может объяснить некоторую разницу в производительности. Однако большой проблемой здесь является подключение.

Насколько я понимаю, вы хотите знать, почему экземпляр Amazon намного медленнее, чем ваш локальный компьютер? Даже если характеристики оборудования предполагают, что они должны быть относительно сопоставимы? Я предполагаю, что у вас такая же установка, запущенная локально и на инстансе Amazon EC2. Когда вы запускаете тестовый тест, вы запускаете его на обоих компьютерах с локального компьютера. Кроме того, мы видим, что скорость вашего интернет-соединения довольно низкая.

Что происходит, так это то, что время, необходимое для запуска теста по сети, заставляет весь тест занять намного больше времени, чем запускать его локально. Полный ответ намного длиннее, чем я могу здесь изложить (он включает в себя способ работы веб-запросов и HTTP, а также то, как работает TCP, его трехстороннее рукопожатие для установления соединения и то, как ограничения задержки и пропускной способности влияют на производительность сети). Короткий ответ заключается в том, что вы не тестируете оборудование друг против друга при запуске этого теста, вы тестируете сетевое соединение. И LAN (как правило) всегда будет WAN.

Это также иллюстрирует серьезную ловушку, которая ловит множество разработчиков (веб-разработчиков, а не всех, у кого есть приложения, которые обмениваются данными по сети). Люди часто тестируют свой веб-сайт, приложение или что-то еще, пока оно работает на машине рядом с ними, и думают: «Вау! Это потрясающе быстро. Я потрясающий!». Что они забывают сделать, так это протестировать его под условия реального мира. Тот факт, что у вас есть 23-дюймовый широкоформатный монитор, не означает, что это делают все. Тот факт, что вы запускаете свой веб-браузер в полноэкранном режиме, не означает, что все делают это. Конечно, загрузка данных по локальной сети выполняется быстро, но что насчет кого-то на полпути? Это те вещи, которые необходимо учитывать при разработке веб-страницы или сетевого приложения.