none
Tuxedo for Windows客户端使用的IOCP吗?如果是的话,怎么在调用中体现? RRS feed

  • 问题

  • Galactica提问的,这里是BizTalk的论坛,相信做SOA产品的也许会听说过Tuxedo。我对此不专业,希望大家帮助回答~
    原问题:
    Tuxedo是通讯中间件,以前是Bea的,现在Bea被Oracle收购了,我使用wcf封装Tuxedo客户端调用,用以支持跨平台调用.

    1,在我的测试中,我发现随着对Tuxedo服务器并发数的增加,Tuxedo服务器对请求的平均响应时间会逐步增大.按照Bea官方解释,每条到Tuxedo服务器的连接支持50个请求的队列长度,因此,如果单次调用时间为5毫秒的话,那么使用一条连接50个并发调用中,最慢的一个应该为250毫秒,这个我可以理解,而且实际测试也是这样的结果.让我不能理解的是,我同时使用50个连接,同时发起50个并发调用,按道理,这50个连接应该是互不干扰的,它们的调用时间应该仍然在5毫秒,但是,实际测试不是这样,测试结果中仍然包含了大量25毫秒,50毫秒,...,250毫秒的请求,导致最终的平均响应时间维持在125毫秒.考虑到Tuxedo对Windows多线程支持的不好,我使用了50个进程,每进程1连接做了相同的测试,结果照旧.然后,我又使用了10台客户机,每客户机5进程,每进程1连接,继续做相同测试,结果依然.最后,为了排除托管代码调用非托管代码的消极因素,我使用MFC重写了测试用例,测试结果还是照旧.

    通过抓取的TCP包,我发现,凡是存在并发的时候,每个请求的最后一个包接收到的时间是制约整个请求完成时间的决定因素.并发高的时候,每个请求的最后一个包总是等待服务器发送完成数据传送的标志,而服务器总是按照队列的形式给每个请求发送该标志.

    我就此问题质询过Oracle驻大中华区的客服,他们把我的测试程序放在他们的测试机上测试,最后告诉我,就是这样的,这个问题没法解决.但是,我不相信他,因为之前他告诉我多线程不存在争用问题,但是最后他却告诉我存在.

    网上存在的多是使用SALT,WTC和Tuxedo互联的应用,很少有关于C++\.Net 平台下的,而且更没有负载测试的相关解答.

    另外,在实际应用中,我并没有使用Bea提供的Tuxedo .Net组件,这个组件中充斥的lock(type)语句本身就限制了客户端的并发,我采用了微软的DbConnectionPool,直接使用Windows API,重写了Tuxedo客户端访问的.Net组件,就像ODP.NET使用OCI那样.

    2,如果1中描述的不是问题,而是事实,我如何使用IOCP的支持,将请求线程空闲出来,也就是让调用Tuxedo服务的操作不占用线程.

    谢谢!

    原文地址:

    经典技术文章翻译(2)Does WCF use or Supports IOCP?WCF是否支持或者使用了IOCP完成端口。


    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com

    2009年7月18日 14:24

答案

  • 这里不是Oracle产品论坛,去http://forums.oracle.com/的SOA论坛问问。


    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over "Vote as helpful" to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月18日 20:17

全部回复

  • 这里不是Oracle产品论坛,去http://forums.oracle.com/的SOA论坛问问。


    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over "Vote as helpful" to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月18日 20:17
  •   好的,谢谢你啊,哈哈,我对这个也不熟悉,以为做BizTalk应该了解这个呢~
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    2009年7月19日 8:05
  • Biztalk又不是只集成Oracle的系统

    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over "Vote as helpful" to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月19日 9:36