我试图从远程队列中读取消息(大约1Mb大小)。方法 queue.get(theMessage,gmo)大约需要3-6秒才能完成。是否有任何选项(如缓冲区大小)来提高性能?
qMgr = new MQQueueManager(qManager);
int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_INPUT_SHARED | CMQC.MQOO_BROWSE;
MQQueue queue = qMgr.accessQueue(qQueue, openOptions);
MQMessage theMessage = new MQMessage();
//theMessage.messageFlags = CMQC.MQMF_SEGMENTATION_ALLOWED;
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = CMQC.MQGMO_LOGICAL_ORDER | CMQC.MQGMO_ALL_SEGMENTS_AVAILABLE | CMQC.MQGMO_COMPLETE_MSG | CMQC.MQGMO_WAIT | CMQC.MQGMO_BROWSE_FIRST;
gmo.matchOptions = CMQC.MQMO_NONE;
gmo.waitInterval = 5000;
queue.get(theMessage, gmo);
答案 0 :(得分:0)
MQGMO_LOGICAL_ORDER可以显着影响性能 - 我会测试是否删除它可以提高性能
MQGMO_ALL_SEGMENTS_AVAILABLE似乎无关紧要,因为MQMF_SEGMENTATION_ALLOWED被注释掉了 - 但是如果它被使用它也会影响性能
尝试在服务器和\或客户端运行跟踪,以便更深入地了解需要花费很长时间的内容
答案 1 :(得分:0)
Ping远程服务器大约100ms。也许我需要改写我的 多线程的应用程序?
嗯,这可以解释很多。 Ping服务器应该少于5毫秒,接近1毫秒。如果需要100毫秒,那么你的网络很慢,真的很慢。
除了压缩之外,没有任何编程可以解决您的问题。即便如此压缩也不是灵丹妙药。
转到您的网络用户,询问他们两台服务器之间的网络速度是多少。如果他们说它低于1Gb / s,则指出它是21世纪,并且您的应用程序需要至少1Gb / s。