Нагрузочное тестирование веб-приложения - PullRequest
0 голосов
/ 20 декабря 2011

Мы проводим нагрузочное тестирование нашего веб-приложения (Java, Struts, Spring, Java EE).Результаты показывают, что из 11 000 нечетных запросов, отправленных на сервер, только 1500 нечетных запросов проходят;большинство из них не выдают SocketException.

Каковы возможные причины, по которым это может произойти?

Я не знаю, где искать приложение, чтобы исправить это.

1 Ответ

2 голосов
/ 20 декабря 2011

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

Я бы посоветовал вам начать запись метрик о том, сколько у вас потоков обработки в режиме ожидания и (если вы можете), сколько ожидающих подключений находится в очереди операционной системы. Если у вас постоянно нулевые незанятые потоки и очередь ОС на максимуме или близко к нему, то вы знаете, что достигли пределов своего аппаратного и / или программного обеспечения и / или базы данных.

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

С настройкой производительности сложно. Вы действительно должны быть очень осторожны с тем, что вы измеряете, но загрузка ЦП, ожидание ввода-вывода, сетевая активность и потребление памяти - хорошее начало.

...