FATAL ERROR в v8 при использовании артиллерии для проверки конечной точки с таймаутом - PullRequest
0 голосов
/ 13 октября 2018

Я тестирую Артиллерия , и я создал приложение, которое проверяет его поведение, когда конечная точка реагирует слишком долго.Чтобы смоделировать это, я создал следующее фиктивное приложение Express:

const express = require("express");
const app = express();
const PORT=3000;
const dateFormat = require("dateformat");

app.get("/timeout",(req,res) => {
    console.log("Processing...")
    var now = Date.now();
    setTimeout(() => {
        var next = Date.now();
        delta = next - now;
        res.send("Time:" + dateFormat(delta, "MM:ss"));
        console.log("Responded!");
    }, 10000);
});

app.listen(PORT, ()=> {
    console.log("Listening to the port", PORT);
})

process.on('uncaughtException', (err) => {
    console.log("========Uncaught exception========");
    console.log(err);
});

У меня оно запущено через докер.Сценарий артиллерии, который я запускаю, таков:

config:
  environments:
    node:
      target: 'http://localhost:3000/node'
      plugins:
        statsd:
          host: localhost
          port: 8125
          prefix: "artillery-node"

  pool: 50

  phases:
    - name: Plain
      duration: 120
      arrivalRate: 5
    - name: Ramp up
      duration: 825
      arrivalRate: 5
      rampTo: 60
    - name: Heavy
      duration: 30
      arrivalRate: 60


scenarios:
  - name: Timeout (/timeout)
    flow:
      - get:
          url: '/timeout'

Теперь, когда я запускаю артиллерию с этой конфигурацией, в конце концов узел выдаст эту ошибку и завершится:

FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal.
node::Abort() [node]
0x8c21ec [node]
v8::Utils::ReportApiFailure(char const*, char const*) [node]
node::TCPWrap::Instantiate(node::Environment*, node::AsyncWrap*, node::TCPWrap::SocketType) [node]
node::ConnectionWrap<node::TCPWrap, uv_tcp_s>::OnConnection(uv_stream_s*, int) [node]
0x141f590 [node]
0x1424d48 [node]
uv_run [node]
Run(Nan::FunctionCallbackInfo<v8::Value> const&) [/usr/app/node_modules/deasync/bin/linux-x64-node-8/deasync.node]
0x7f1d995811d7 [/usr/app/node_modules/deasync/bin/linux-x64-node-8/deasync.node]
v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) [node]
0xad712c [node]
v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [node]
0x3daca6b842fd
Aborted
npm ERR! code ELIFECYCLE
npm ERR! errno 134
npm ERR! js@1.0.0 start: `node app.js`
npm ERR! Exit status 134
npm ERR! 
npm ERR! Failed at the js@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-10-13T16_20_51_567Z-debug.log

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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...