Netty测试记录

描述:
1.用netty+json做服务接收数据,模拟近似单一业务(接收入库,有则更新)
2.数据库mysql5.6:用到ON DUPLICATE KEY UPDATE
3.服务端CPU E5-2620(双处理器,每个处理器6核12线程) 内存16 系统server2007(32位)
4.客户端i7-6700K(4核8线程) 内存8G WIN10
5.网络42环保专网(客户端用的无线连接)
6.模拟多客户端同时连接,每5秒定时发送数据,服务端接收json格式数据,解析入库更新
7.如果客户端出现一个响应时间超过3秒,则全部停止

测试1:

Server JVM设置 -Xmx400m -Xmx400m

Client JVM设置 -Xmx4G -XmxG

每个协议,包含20条记录

启动线程数1500,每分钟增加100线程(即初始化记录数为1500*20=30000,每分钟增加2000记录,同时入库更新)
线程数到2400时,出现超时情况。
分析:
1.客户端堆不到2G,cpu使用极低,情况正常
2.Druid连接池,正常

3.Server GC日志:GC (Allocation Failure)频繁,调整-Xms800m -Xmx800m -Xmn600m

测试2(每个协议,包含20条记录)

启动线程数2000,每分钟增加100线程

远程server服务器出现卡顿现象,CPU正常,数据接收正常,估计是无线网络导致的问题,

调整-Xms1200m -Xmx1200m -Xmn1000m内存不足,调整mysql:innodb_buffer_pool_size = 512M

线程数到2600时,出现超时情况。(怀疑访问错误)

 

测试3(每个协议,包含200条记录)

并发时每个客户端创建延迟10ms避免竞争

启动线程数1000,每分钟增加100线程(即初始化记录数为1000*200=20W)

线程数到1900时,出现超时情况。

 

测试4(每个协议,包含20条记录)

启动线程数2000,每分钟增加100线程(即初始化记录数为2000*20=4W)

线程数到3800时,出现超时情况。

 

测试5

druid的并发一直都是4,查看是否与worker.group.size相关

-Dnetty.server.boss.group.size=2 
-Dnetty.server.worker.group.size=4->16 

启动线程数3000,每分钟增加100线程(即初始化记录数为3000*20=6W)

worker现场组设置成16后,druid并发变成16,确实相关

线程数到3800时,出现超时情况。(因为执行中的并发一直都很小所以,mysql入库不是导致超时原因)

 

列表记录20条~1.56k,列表记录200条~14.6k

 

测试号线程数列表记录大小大小
1    
2    
319002001900*14.6=27740k27m
4    
53800203800*1.56k=5928k6m

 

 

 

 

 

 

 

问题记录:

并发时每个客户端创建延迟10ms避免竞争(可以提高并发数,测试3开始)
Client JVM设置 -Xmx400m -Xmx400m 线程1500就异常了,设置4G正常运行
启动出现重新情况(未处理)(设置延迟10ms避免竞争,未出现)
服务器默认32位系统,启动server为client模式(修改jvm.cfg)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值