C10M websocket静态连接测试

测试环境

* 服务器:4核32G内存,ubuntu 16.04

* 客户端(16台):2核4G内存,ubuntu 16.04

服务器优化参数

 最大文件打开数增大

默认

cat /proc/sys/fs/file-max

3283596

ulimit -n

65535

修改

sudo vi /etc/security/limits.conf

root soft nofile 3283596

root hard nofile 3283596

* soft nofile 3283596

* hard nofile 3283596

端口范围增大

默认

sysctl -a|grep ip_local_port_range

net.ipv4.ip_local_port_range = 32768 60999

修改

sysctl -w net.ipv4.ip_local_port_range = 1024 65535

设置TCP 在关闭的时候不缓存指标在 route cache

sysctl -w net.ipv4.tcp_no_metrics_save=1

服务器待测服务情况

* pm2 4实例管理的node websocket服务

* node开启16个端口的websocket监听(3200-3015)

测试过程

* 客户端模拟64000个websocket连接

* 16台测试客户端依次启动(当前一台达到64000后启动下一台)

测试结果

服务端连接数情况


C10M websocket静态连接测试_第1张图片

稳定状态下的负载情况


C10M websocket静态连接测试_第2张图片

初始化pm2 node服务情况


C10M websocket静态连接测试_第3张图片

结束后稳定状态下pm2 node服务情况


C10M websocket静态连接测试_第4张图片

报错情况


{ Error: connect ETIMEDOUT 10.0.1.154:3208

at Object._errnoException (util.js:1024:11)

at _exceptionWithHostPort (util.js:1046:20)

at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)

code: 'ETIMEDOUT',

errno: 'ETIMEDOUT',

syscall: 'connect',

address: '10.0.1.154',

port: 3208,

type: 'error',

target:

WebSocket {

domain: null,

_events:

{ message: [Object],

open: [Object],

close: [Object],

error: [Object] },

_eventsCount: 4,

_maxListeners: undefined,

_socket: null,

_ultron: null,

_closeReceived: false,

bytesReceived: 0,

readyState: 0,

supports: { binary: true },

extensions: {},

_binaryType: 'nodebuffer',

_isServer: false,

url: 'ws://10.0.1.154:3208/scene/push/6565',

protocolVersion: 13 } }

你可能感兴趣的:(C10M websocket静态连接测试)