【现象】
在分布式环境中同时启动多个服务器时,可能会无法启动。
【发生条件】
满足以下所有条件的情况下可能会发生。
・是指具有2个以上节点的分布式结构
・多个服务器同时启动
【原因】
在intra-mart Accel Platform的启动过程中,通过分布式环境中的服务器间进行通信来选出服务器。
服务器的选出处理会在分布式环境中的服务器启动或者停止时触发。
如果同时启动多个服务器,根据处理的进度,可能会多次出发各个服务器上的服务选出处理。
在同时执行多次服务选出处理的情况下,会导致服务器之间的通信暂时增加。
服务器之间的通信是由后台生成线程进行的,如果通信增加会导致后台线程不足,从而导致无法进行通信。
在陷入无法通信的情况下,服务会无法正常启动,从而导致服务器也无法启动。
【解决方法】
可以通过改变服务器启动时间来避免这种情况。
【补充】
除了通过改变服务器启动时间的解决方法之外,还可以通过增加以下设置值来避免这种情况。
・网络设置 (network-agent-config.xml) 的最大通信线程数 (max-threads)
・网络设置 (network-agent-config.xml) 的到达确认/重新发送的最大通信线程数 (max-oob-threads) 。
参考: https://document.intra-mart.jp/library/iap/public/configuration/im_configuration_reference/texts/im_core/network-agent-config/index.html
然而,同时启动多个服务器的操作的情况下,根据应用程序的配置,服务器数量和处理进度的不同,以下的文档中有建议大概标准(服务器数量的两倍),可能会出现不足,
・ https://document.intra-mart.jp/library/iap/public/im_core/im_service_specification/texts/clustering/index.html#label-overview-max-thread-setting
想要获得最佳线程数,需要通过逐渐增加并随时观察现象的发生情况的反复实验的方法。
-- 适用对象 -----------------------------------------------------------------
iAP/Accel Platform/所有更新版本
---------------------------------------------------------------------------------
FAQID:1281
在分布式环境中同时启动多个服务器时,可能会无法启动。