26
2017
09

使用websocket-bench进行socket.io性能测试

下面描述使用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

上一篇:AR项目实践二:ar直尺 下一篇:iOS 关于UILabel文本的自适应