Артиллерия JavaScript куча нехватки памяти
9 просмотра
1 ответ
Laodtest не запускается после изменения скорости прибытия с 10 до 100.
Artillery: 1.6.0-27 Artillery Pro: not installed Node.js: v10.15.0 OS: darwin/x64
:test $ artillery run -o report.json artillery.yml Started phase 0, duration: 10s @ 10:01:42(+0000) 2019-03-10 . <--- Last few GCs ---> [62621:0x102803200] 9478 ms: Mark-sweep 1392.4 (1401.5) -> 1392.3 (1401.5) MB, 20.1 / 0.0 ms (average mu = 0.439, current mu = 0.002)
GC последней инстанции в старом запрошенном месте [62621: 0x102803200] 9498 мс: развертка отметки 1392,3 (1401,5) -> 1392,3 (1401,5) МБ, 20,6 / 0,0 мс (среднее значение mu = 0,277, текущий mu = 0,001) GC последней инстанции в старой версии запрошенное пространство
<--- JS stacktrace ---> ==== JS stack trace ========================================= 0: ExitFrame [pc: 0x38a6205dbe3d] Security context: 0x1da57481e6e1 1: byteLength [0x1da5274066f1] [buffer.js:526] [bytecode=0x1da597d26509 offset=126](this=0x1da5d7c5fbc1 <JSFunction
Буфер (sfi = 0x1da573a14251)>, строка = 0x1da597e082b9, кодировка = 0x1da5d92026f1) 2: кадр адаптера аргументов: 1-> 2 3: setContentLength (он же setContentLength) [0x1da5201841e9] [/ Users // n.
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: 0x10003b125 node::Abort() [/Users//.nvm/versions/node/v10.15.0/bin/node] 2: 0x10003b32f node::OnFatalError(char const*, char const*) [/Users//.nvm/versions/node/v10.15.0/bin/node] 3: 0x1001a8e85 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char
const *, bool) [/Users//.nvm/versions/node/v10.15.0/bin/node] 4: 0x1005742a2 v8 :: internal :: Heap :: FatalProcessOutOfMemory (char const *) [/Users//.nvm /versions/node/v10.15.0/bin/node] 5: 0x10057d7a4 v8 :: internal :: Heap :: AllocateRawWithRetryOrFail (int, v8 :: internal :: AllocationSpace, v8 :: internal :: AllocationAlignment) [/ Users // .nvm / версии / узел / v10.15.0 / bin / node] 6: 0x10054f055 v8 :: internal :: Factory :: NewRawOneByteString (int, v8 :: internal :: PretenureFlag) [/Users//.nvm/versions/node /v10.15.0/bin/node] 7: 0x1006811a8 v8 :: internal :: String :: SlowFlatten (v8 :: internal :: Handlev8 :: internal :: ConsString, v8 :: internal :: PretenureFlag) [/ Users // .nvm / версии / узел / v10.15.0 / bin / node] 8: 0x1001c6c1d v8 :: String :: Utf8Length () const [/Users//.nvm/versions/node/v10.15.0/bin/node] 9: 0x10004eaac node :: Buffer: :( анонимное пространство имен) ::ByteLengthUtf8 (v8 :: FunctionCallbackInfov8 :: Value const &) [/Users//.nvm/versions/node/v10.15.0/bin/node] 10: 0x10023170f v8 :: internal :: FunctionCallbackArguments :: Call (v8 :: internal: : CallHandlerInfo *) [/Users//.nvm/versions/node/v10.15.0/bin/node] 11: 0x100230c51 v8 :: internal :: MaybeHandlev8 :: internal :: Object v8 :: internal: :( анонимное пространство имен) :: HandleApiCallHelper (v8 :: внутренняя :: Изолировать *, v8 :: внутренняя :: Handlev8 :: внутренняя :: HeapObject, v8 :: внутренняя :: Handlev8 :: внутренняя :: HeapObject, v8 :: внутренняя :: Handlev8 :: internal :: FunctionTemplateInfo, v8 :: internal :: Handlev8 :: internal :: Object, v8 :: internal :: BuiltinArguments) [/Users//.nvm/versions/node/v10.15.0/bin/node] 12: 0x1002302f0 v8 :: internal :: Builtin_Impl_HandleApiCall (v8 :: internal :: BuiltinArguments, v8 :: internal :: Isolate *) [/Users//.nvm/versions/node/v10.15.0 / bin / node] 13: 0x38a6205dbe3d Прерывание прерывания: 6
Мои тесты выглядят так.
.yml
config:
target: "<URL_REMOVED"
processor: "./getData.js"
phases:
- duration: 10
arrivalRate: 100
scenarios:
- flow:
- function: "getData"
- post:
url: "/api/v2/auth"
json:
productId: "56729b6b77c82288f746c0cf"
capture:
json: "$.data.token"
as: "token"
- post:
url: "/api/v2/sessions"
headers:
Authorization: 'Bearer {{token}}'
json:
productId: "56729b6b77c82288f746c0cf"
jobId: "{{jobId}}"
capture:
json: "$.data.session._id"
as: "sessionId"
- post:
url: "/api/v2/sessions/{{sessionId}}/document"
headers:
Authorization: "Bearer {{token}}"
json:
side: "front"
payload: "{{frontDocument}}"
- get:
url: "/api/v2/sessions/{{sessionId}}/metrics/front"
headers:
Authorization: "Bearer {{token}}"
- get:
url: "/api/v2/sessions/{{sessionId}}/classification"
headers:
Authorization: "Bearer {{token}}"
- get:
url: "/api/v2/sessions/{{sessionId}}/end"
headers:
Authorization: "Bearer {{token}}"
getData.js
'use strict';
var faker = require('faker');
var FRONT_ID = require("./resources/id/front.json");
module.exports = {
getData
};
function getData(userContext, events, done) {
let jobId = faker.random.uuid()
userContext.vars.jobId = jobId;
userContext.vars.frontDocument = FRONT_ID.base64;
return done();
}
Автор: Kay
Источник
Размещён: 17.05.2019 02:49
Ответы (1)
0 плюса
У вашего 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?
Вы, вероятно, не должны превышать скорость прибытия в тесте нагрузки в десять раз. Попробуйте удвоить это.
Автор: O. Jones Размещён: 10.03.2019 01:07Вопросы из категории :
- node.js Удалить пустые элементы из массива в Javascript
- node.js Как мне избежать строки для команды оболочки в узле?
- node.js Могу ли я использовать jQuery с Node.js?
- node.js Как отлаживать приложения Node.js?
- node.js Как автоматически перезагрузить файлы в Node.js?
- heap Что и где находится стек и куча?
- heap Что быстрее: распределение стека или выделение кучи
- heap Вызов delete для переменной, размещенной в стеке
- heap Последствия размещения кучи и стека (.NET)
- heap В чем различия между VirtualAlloc и HeapAlloc?
- v8 Ссылка на движок Google V8 от приложения .NET.
- v8 Какова временная сложность array.splice () в Google Chrome?
- v8 Используют ли обычные реализации JavaScript интернирование строк?
- v8 Как проверить, какая версия v8 установлена ??с моим NodeJS?
- artillery Как частично ответить на ответ в артиллерийском инструменте?
- artillery Как создать случайную строку или число в сценарии нагрузочного тестирования артиллерии?
- artillery Как добавить паузу в поток артиллерии?
- artillery нагрузочный тест сокета IO с использованием артиллерии
- artillery Нагрузка / стресс-тестирование углового приложения