Socket.IO + Nginx连接限制

时间:2015-07-23 11:01:46

标签: node.js sockets nginx socket.io

我使用Socket.io启动服务器并使用Nginx作为负载平衡。 现在我尝试加载测试服务器。

我循环创建连接并计算connect的连接数,并在connect_error时记录。 当我通过Nginx连接到服务器时,每次~500连接后都会出错。

Opening SOCKET
   SOCKET connect 508
Opening SOCKET
   SOCKET connect 509
Opening SOCKET
connect_error
{ [Error: websocket error]
  description: 
     { [Error: socket hang up]
       code: 'ECONNRESET',
       target: 
          { domain: null,
            _events: [Object],
            _maxListeners: 10,
            _socket: null,
            _ultron: null,
            _closeReceived: false,
            bytesReceived: 0,
            readyState: 0,
            supports: [Object],
            extensions: {},
            _isServer: false,
            url: 'ws://MY_NGINX_SERVER/socket.io/?EIO=3&transport=websocket',
            protocolVersion: 13,
            binaryType: 'arraybuffer' } 
    } 
}

但如果我直接连接到套接字服务器,它可以有超过500个连接。

这是我的Nginx配置

server {
    listen   80;
    access_log /var/log/nginx/load_test.log;
    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://SOCKETIO_SERVER/;
        proxy_redirect off;
    }
}

我认为这是Nginx配置文件中的内容,但我找不到任何帮助。

感谢您提前。

1 个答案:

答案 0 :(得分:1)

我的不好,它必须在文件/etc/nginx/nginx.conf中配置app.controller('MyCtrl', ['$scope', '$timeout', function ($scope, $timeout)...

worker_connections