美文网首页待整理Laboratory程序员
ActiveMQ最大连接数测试

ActiveMQ最大连接数测试

作者: MisterCH | 来源:发表于2017-04-02 21:27 被阅读2192次

    在项目前期对amq的测试过程中,我们摸索出一台4C8G的amq可以支持的最大连接数约为6000个。最近和其它的项目合作,他们进行了一次连接数的测试,得到9000个连接才会导致mq宕机的结果。3000个连接的差异意味着我的测试中一定有什么不对。所以这两天研究了一下mq的连接机制,也进行了几次测试,现在需要总结一下。

    2C4G的amq,env的配置里Jvm的配置我配置成了Xms4G Xmx6G。

    嗯,基本上就是我一开始以为这台机器是4C8G,配错了……

    使用客户端测试,连接池Poolconnection的方式,能支持的连接数:

    Xms4G Xmx6G:2823
    Xms256m Xmx1G:8160

    这里连接数的测试是测试到mq直接被压垮为止,也就是说在8160个连接的时候,Amq的日志显示报错并且amq进程停止。

    也就是说jvm的内存设置并不是越大越好的。

    接着测试了一下,6000个连接的时候,2C4G的amq仍然可以正常跑。

    结论:AMQ的JVM堆内存设置不是越大越好的

    究其原因,每个往AMQ的连接,AMQ都会建立一个线程与之对应,而后定时发送心跳,因此连接数量其实就是单个进程能建立的线程数,每个线程建立时会使用jvm堆内存外的内存,所以jvm内存设置小,反而连接数多

    百度了一下,相关说明

    JVM中可生成的最大Thread数量

    影响线程数量的因素有下面几个:

    • -Xms: intial java heap size
    • -Xmx: maximum java heap size
    • -Xss: the stack size for each thread
    • 系统限制: 系统最大可开线程数

    增大堆内存(-Xms,-Xmx)会减少可创建的线程数量,增大线程栈内存(-Xss,32位系统中此参数值最小为60K)也会减少可创建的线程数量。

    系统限制:
    /proc/sys/kernel/pid_max,
    /proc/sys/kernel/thread-max,
    max_user_process(ulimit -u),
    /proc/sys/vm/max_map_count。

    相关文章

      网友评论

      • 余聪_e89a:你好!默认的activemq只能支持1000个连接;所以可以分享一下你的activemq的 具体配置么?万分感谢
        余聪_e89a:@MiSterRabbit 感谢你的恢复;我之前修改过,然后用node脚本测试无效,可能是我忽略了哪一点;既然你给了肯定的答复,我再去试一下~~:blush:
        MisterCH:@余聪_e89a 只需要修改activemq.xml中的transportConnector的设置就行了。
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=5000&wireFormat.maxFrameSize=104857600/>

      本文标题:ActiveMQ最大连接数测试

      本文链接:https://www.haomeiwen.com/subject/hvtnottx.html