從.NET WCF服務使用MQ系列時,我遇到了一些模糊的性能問題。使用.NET中的MQ系列的高吞吐量
該服務是多線程的 - 它每秒接收很多請求並將其放入隊列中。由於連接隊列被認爲是代價高昂的,我決定這個服務是一個singleton,它連接一次到隊列(只要它被實例化),然後接受許多並行調用來把消息放到隊列中。
在我目前的環境下,我可以每秒處理850個呼叫。在這個數字之後,事情開始變得非常錯誤。突然間,我開始從WCF發出超時錯誤。我所有的分析都指出,PUT命令花費的時間太長,我猜測它是同步線程;這意味着我有更多的要求,每個要求的時間越長。
從我的代碼部分樣本:
和他們談到寫作方法:
public void EscreverMensagemObject(object entrada_)
{
try
{
var mensagemMq = new MQMessage { Format = MQC.MQFMT_STRING, Expiry = MQC.MQEI_UNLIMITED };
mensagemMq.WriteObject(entrada_);
var opcoesMqPut = new MQPutMessageOptions();
_mqQueueEscrita.Put(mensagemMq, opcoesMqPut);
}
catch (MQException mqEx)
{
if (mqEx.ReasonCode == MQC.MQRC_CONNECTION_BROKEN)
Reconectar();
else
throw new Exception(string.Format(ERRO_AO_ESCREVER_MENSAGEM, mqEx.Reason, mqEx.Message), mqEx);
}
catch (Exception ex)
{
throw new Exception(string.Format(ERRO_AO_ESCREVER_MENSAGEM, ex.HResult, ex.Message), ex);
}
}
這是它的本質。我做錯了什麼,或者忘了設置一些可以幫助我實現更高性能的選項?
您可以顯示連接選項(MQC.CNO_xxx)你正在使用用於創建連接? – Shashi
@Shashi,我想我實際上並沒有使用任何東西。我是不是該? –