Как проверить масштабируемость моего приложения

Я разработал приложение, которое будет создавать много PDF-файлов и обслуживать эти файлы. (Это нормальная сервлет-буферизация порции).

Как сделать так, чтобы мое приложение работало с несколькими запросами? Существует ли какой-либо инструмент для тестирования нагрузки / масштабируемости / эффективности и сколько параллельных запросов обрабатывает мой код с текущей конфигурацией сервера?

6 ответов

Вы можете использовать тестер нагрузки как Цунг

Я также рекомендовал бы JMeter. Вы также можете записать запросы страниц вашего браузера для создания теста JMeter ( HTTP-прокси-сервер).

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

Хорошее начало - jvisualvm, который входит в последнюю версию Sun JDK.

Вы должны рассмотреть возможность использования инструментов для нагрузочных испытаний, таких как шлифовальный станок или метр. grinder поддерживает скрипты, а jmeter позволяет превратить junit в клиент тестирования нагрузки. Мне лично нравится jmeter из-за поддержки junit, а также из-за его прекрасного управления графическим интерфейсом и отчетности. Поддержка jmeter http и мыло из коробки. Кроме того, вы можете написать свои собственные плагины в соответствии с вашими потребностями.

Самое простое, что вы можете сделать, - это тест Apache, который, вероятно, уже установлен, если вы работаете в системе на основе Unix или поставляется с Apache Webserver 2.x для Windows.

Пример использования;

$ ab -n 1000 -c 20 http://www.google.com/

Дает мне этот вывод;

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.google.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        gws
Server Hostname:        www.google.com
Server Port:            80

Document Path:          /
Document Length:        218 bytes

Concurrency Level:      20
Time taken for tests:   1.826 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      807000 bytes
HTML transferred:       218000 bytes
Requests per second:    547.55 [#/sec] (mean)
Time per request:       36.527 [ms] (mean)
Time per request:       1.826 [ms] (mean, across all concurrent requests)
Transfer rate:          431.51 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        9   12  14.7     10     337
Processing:    11   24  26.8     17     306
Waiting:       11   22  21.1     16     297
Total:         21   36  30.5     28     350

Percentage of the requests served within a certain time (ms)
  50%     28
  66%     36
  75%     39
  80%     41
  90%     45
  95%     54
  98%     93
  99%    253
 100%    350 (longest request)

Apachebench это однопоточный инструмент. Это означает, что он не сможет насытить SMP-сервер (многопоточный или многопроцессный).

Вы должны скорее рассмотреть weighttp, который использует синтаксис AB (единственное отличие состоит в том, что -t 4 означает использование 4 рабочих потоков вместо 4-секундного теста).

Другие вопросы по тегам