在 SGI 上运行的 ActiveMQ 的任何已知问题
Posted
技术标签:
【中文标题】在 SGI 上运行的 ActiveMQ 的任何已知问题【英文标题】:Any known issues with ActiveMQ running on SGI 【发布时间】:2014-09-03 19:29:43 【问题描述】:我在尝试使用 ActiveMQ 时遇到了很多问题,想知道在 SGI 硬件上运行是否存在任何已知问题 - 特别是 UV2k?在 Suse linux 上运行是否存在任何已知问题? 启动 ActiveMQ 服务时启动了很多线程,并收到一条错误消息,指出“为 selectChannelConnector 配置的线程不足”。尝试限制 JVM 线程堆栈大小,但没有任何乐趣。
ActiveMQ 5.10 快照
【问题讨论】:
【参考方案1】:我没有听说过 UV2k,但它听起来像是有很多处理器/内核的东西,对吧?
Jetty 为 ActiveMQ 的 webgui 提供动力,每四个核心使用一个连接接受器(大约)。 Jetty 中的默认线程池大小最大为 256 个线程,因此如果您有 1024 个以上的内核,则线程池对于 jetty 来说是不够的。一个快速的谷歌显示 UV2K 有“多达 4096 个内核”(不管这意味着什么,如果这是 Jetty 考虑的数字 - 这意味着 1024 个接受器)。
您可以通过将此元素放入 conf/jetty.xml 中的“服务器”bean 中来更改 Jetty 线程池。我将正确的最大尺寸留给您自己决定。
<property name="threadPool">
<bean id="ThreadPool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<property name="minThreads" value="10"/>
<property name="maxThreads" value="XXX"/>
</bean>
</property>
您可以尝试的另一件事是将接受器的数量手动设置为较低的值,例如 1(管理 UI 不需要太多)。查看您的连接器 bean(同一文件),并添加属性 <property name="acceptors" value="2"/>
。
出于显而易见的原因,我没有在你提到的机器上测试过上述配置,所以认为这是一个“很好的猜测”,而不是一个确定的事实。
【讨论】:
非常感谢,我会试一试。我们的紫外线“仅”有 512 个核心。与此同时,我们建立了一个单核虚拟机来托管 ActiveMQ以上是关于在 SGI 上运行的 ActiveMQ 的任何已知问题的主要内容,如果未能解决你的问题,请参考以下文章
架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)
com.netflix.discovery.shared.transport.TransportException:无法在任何已知服务器上执行请求