ActiveMQ最大连接数测试

2018.11.25更新

现在回头看看这篇文章,其实是有问题的。看看阅读量已经到了3000,感觉还是需要更正一下。

ActiveMQ的传统配置使用的BIO模式,也是Blocking IO模式,在这种模式下,ActiveMQ的每一个客户端所建立的连接,需要使用一个线程来承载,JVM的默认配置里Xss=1024,也就是每个线程需要1MB堆外内存,这样就导致了前期测试的时候发现堆外内存会影响连接数。

在高并发的情况下,使用BIO模式是很危险的。在我们的环境中已经出现了堆外内存溢出的情况。所以建议都使用NIO模式,NIO模式里不再使用线程来承载连接,而是使用连接池来承载请求。特别是连接数量上千的时候。

在AMQ的官网里有类似的描述
If you want to scale your broker to support thousands of connections to it, you need to first find the limits of number of threads JVM process is allowed to create. Then you can set these properties to some value below that (broker need more threads to operate normally). For more information on thread usage by destinations and how to limit those, please take a look at Scaling Queues or this configuration file. For example you can add the following
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.transport.nio.SelectorManager.corePoolSize=2000 -Dorg.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=2000 -Dorg.apache.activemq.transport.nio.SelectorManager.workQueueCapacity=1024"to the startup script (${ACTIVEMQ_HOME}/bin/env for example) to have a constant pool of 2000 threads handling connections. With the setting like this, the broker should be able to accept the number of connections up to the system limits. Of course, accepting connections is just one part of the story, so there are other limits to vertically scaling the broker.

也就是首先需要调整为NIO模式,而后对NIO模式进行核心线程池、最大线程池容量和线程池队列容量的配置。

原文

在项目前期对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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容