下面描述使用websocket-bench工具进行socket.io性能测试
1, 测试工具准备
1)客户端准备
(1)安装node
安装方法可在网络上查找
(2)安装websocket-bench
npm install -g websocket-bench --registry=http://registry.npm.taobao.org
(3)修改进程打开最大文件描述符数
vi /etc/profile
ulimit -n 65535 #增加行
2)服务端准备
(1)修改进程打开最大文件描述符数
vi /etc/profile
ulimit -n 65535 #增加行
(2)修改nginx
worker_processes auto;
worker_rlimit_nofile 100000;
pid /run/nginx.pid;
events {
worker_connections 65535;
multi_accept on;
use epoll;
}
2, 测试
websocket-bench -a 50 -c 10 http://172.16.11.6/testnamespace?group=live
1)服务器:4核8GB 4个服务进程 2W连接正常 内存使用率达到80%
2)服务器:2核2GB 1个服务进程 8K连接正常 内存使用率达到100%
3)服务器:2核4GB 1个服务进程 1W连接正常 内存使用率达到60%
综上:为了保证服务的健康性线上采用两台服务器(2核4GB) 的配置
3, 其他
(1)服务端多结点时候需要配置nginx upstream 节
upstream socket_api {
ip_hash; #ip_hash 方式
#sticky; #nginx-sticky-module 包
server 172.16.11.6:9090 ;
server 172.16.11.6:9092 ;
server 172.16.11.6:9096 ;
}
说明:配置后端多结点时,同一个连接的请求必须打到同一个后台服务上,有两种方式:
a)ip_hash 直接配置就能使用,但是只对与请求端ip的C端地址部分进行hash
b)使用nginx-sticky-module包, 需要编译安装nginx并把改模块加入
(2)websocekt-bench限制
websocekt-bench不支持cookie,所以nginx只能配置成ip_hash方式测试
[参考]
1,测试参考
2,websocket-bench
3,Nginx模块之SessionSticky