У вашего nodejs, экземпляра, запускающего артиллерию, недостаточно ОЗУ.Его ограничение по умолчанию составляет около 1,4 ГБ.
Артиллерия в * nix, вероятно, запускается с /usr/bin/artillery
, когда вы устанавливаете ее с npm install -g
.
Первая строка этого файла, скорее всего,
#!/usr/bin/env node
Попробуйте изменить это значение на
#!/usr/bin/env node --max-old-space-size=8192
, чтобы получить пространство кучи в 8G.Но не берите больше места в куче, чем машина, на которой работает артиллерия, имеет физическую оперативную память, или вы будете уничтожены.Прочитайте это: как увеличить память по умолчанию для nodejs?
Редактировать : остается вопрос: почему ваш artillery
процесс выдувает свойкуча.Похоже, он работал около 9 секунд, прежде чем он упал.Возможно, ваша тестируемая система не может справиться с нагрузкой, которую вы на нее возлагаете, с частотой поступления 100. Возможно, артиллерия продолжает создавать и ставить в очередь сообщения в памяти и получать запросы, и они не заканчивают работу, поэтому онине отпускай.Есть ли в ваших журналах производительности какие-либо намеки на это?
Весь смысл нагрузочного тестирования состоит в том, чтобы найти критическую точку тестируемой системы.Вы не протестируете лодку, загрузив в нее десять мешков с песком, затем сказав «круто, это работает», а затем выбросив в нее 100 мешков с песком.Лодка просто утонет.Зачем тестировать сервер таким образом?Все, что вы узнаете, - это емкость где-то между 10 и 100. Вместо этого увеличивайте нагрузку, мешки с песком за песком, пока система не начнет спотыкаться.
Вот почему артиллерия (да и большинство систем тестирования нагрузки) имеет способ увеличить нагрузку .
Почему бы не попробовать что-то вроде этого:
- duration: 120
arrivalRate: 10
name: "Two minutes, ten arrivals/sec"
- duration: 600
arrivalRate: 10
rampTo: 100
name: "Ten minutes, gradual ramp to 100 arrivals/sec"
После того, как вы узнаете частоту появления, с которой ваша система спотыкается, вы можете проводить более подробные тесты по мере необходимости.И вы можете попытаться переработать ваш код, чтобы сделать его быстрее, если это необходимо.
Кроме того, 10-секундный тест, как правило, недостаточно длинный, чтобы собрать полезные данные.Вы хотите знать емкость вашей системы при постоянной высокой нагрузке.