Ошибки Artilleryio Nginx при нагрузочном тестировании - PullRequest
0 голосов
/ 19 марта 2019

Изначально мой тестовый файл работал с использованием Artillery.io для тестирования моего приложения чата с Socket.io (Express). Однако все изменилось при попытке загрузить тест Nginx.

Теперь при запуске $ artillery run test.yml ничего не запускается, и это окончательный отчет:

All virtual users finished
Summary report @ 16:51:26(+0100) 2019-03-19
  Scenarios launched:  10
  Scenarios completed: 0
  Requests completed:  0
  RPS sent: NaN
  Request latency:
    min: NaN
    max: NaN
    median: NaN
    p95: NaN
    p99: NaN
  Scenario counts:
    0: 10 (100%)
  Errors:
    Error: websocket error: 10

Я считаю, что проблема в том, что в консоли выдает эту ошибку:

index.js: 83 Отказался от подключения к 'WS: //127.0.0.1: 8080 / socket.io / EIO = 3 & транспортное = WebSocket & SID = XntHB1NMZhCYOPNLAABI' потому что это нарушает следующую директиву политики безопасности контента: "default-src 'self' http://127.0.0.1:8080/". Обратите внимание, что 'connect-src' не был задан явно, поэтому «default-src» используется как запасной вариант.

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

Я также добавил этот тег в свой index.html:

<meta http-equiv="Content-Security-Policy" content="connect-src 'self' data:; default-src 'self' http://127.0.0.1:8080/"> но это только мешает подключению всех браузеров.

Как пользователь я могу отправить сообщение вручную, и все работает нормально.

Это просто при попытке запустить команду артиллерии. Есть ли проблема с IP, с которого идет тест?

Вот файл test.yml:

config:
  target: 'http://127.0.0.1:80'
  socketio:
    transports: ["websocket"]
  phases:
    - duration: 10
      arrivalRate: 1
scenarios:
  - engine: "socketio"
    flow:
      - get:
          url: "/"
      - emit:
            channel: "test new message"
            data: {
              message: "hello",
              handle: "Christian"
            }

Наконец, конф Nginx:

http {
  server {
    listen 80;
    #serve static files
    root /public/;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;

        proxy_pass http://io_nodes;

        #enable websockets
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_update;
        proxy_set_header Connection "upgrade";

    }
  }
    #load balancing socket io
    upstream io_nodes {
        # enable sticky sessions
        ip_hash;
        server 127.0.0.1:8080 weight=5;
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
        server 127.0.0.1:8083;
    }
}

Спасибо за любую помощь в этом.

...