首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.NET MQ系列的高吞吐量

使用.NET MQ系列的高吞吐量
EN

Stack Overflow用户
提问于 2014-01-07 21:26:11
回答 1查看 485关注 0票数 0

在使用来自.NET WCF服务的MQ系列时,我遇到了一些模糊的性能问题。

该服务是多线程的-它每秒接收多个请求并将其放到队列中。由于连接到队列的成本被认为是昂贵的,所以我决定该服务是一个单例,它只连接一次队列(一旦实例化),然后接受多个并行调用将消息放入队列。

在我当前的环境中,每秒最多可以处理850次调用。在这个数字之后,有些事情开始变得很不对劲。突然之间,我开始从WCF获得超时错误。我所有的分析都指出,PUT命令花费的时间太长,我的猜测是它是同步线程;这意味着我的请求越多,每个请求所用的时间就越长。

我代码中的一些示例:

代码语言:javascript
复制
// The objects below are members of the singleton service
_mqQueueManager = new MQQueueManager(_config.QueueManagerName,
                            channelConfig[0], channelConfig[2]);

_mqQueueEscrita = _mqQueueManager.AccessQueue(_config.QueueConnectionName,
                            MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_OUTPUT);

他们的写作方法是:

代码语言:javascript
复制
    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);
        }

    }

这就是它的本质。我是做错了什么,还是忘了设定一些选项来帮助我取得更高的成绩?

EN

回答 1

Stack Overflow用户

发布于 2014-01-08 14:33:55

我猜,当多个线程试图使用相同的连接来放置消息时,您可能进入了一个争用状态。我建议您在创建到队列管理器的连接时尝试使用MQC.MQCNO_HANDLE_SHARE_BLOCK选项。此选项表示进程的一个线程分配的连接和对象句柄可由属于同一进程的其他线程使用。但是,一次只有一个线程可以使用任何特定句柄;也就是说,只允许连续使用句柄。如果线程试图使用另一个线程已经在使用的句柄,则调用将阻塞(等待),直到句柄可用为止。

关于不同MQCNO_的更多详细信息是这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20982231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档