压测工具:Apache JMeter
服务器配置:虚拟机,4核8线程,8G内存,CentOS8
主要简单模拟大量订阅消息(建立连接),但消息不多的场景,类似挂QQ或微信但少有消息的场景,采用默认设置。
经典版:只能压测到3000多个连接就再也上不去了,改为NIO后也只能到4000多个连接,而且CPU内存并未占满。
Artemis:情况差不多,也只能到4000多个连接。
一度怀疑是客户端PC连接数有瓶颈,但多台压测仍旧如此,搜了半天网上也没这方面的资料。
后来发现原因:
Linux默认设置有限制一个进程能打开的文件数/连接数,可通过ulimit -n查看,默认是1024。编辑/etc/security/limits.conf修改配置后,经典版上限大约是4万+连接,消息收发不丢失,此时内存占用3G左右。而Artemis能上到10万连接以上,内存占用1.3G左右,没有继续压测了。