高并发WCF配置

在使用WCF做服务接口时,TCP模式肯定比Http效率高,Binary/MTOM格式的绑定也会Text格式的绑定高效。

两个endpoint,一个用来调试:ms-mex的binding是用来方便WCF调试工具和远程对象应用,另一个是实际工作模式配置:customBinding。

为了提高接口的并发数,特实验custonBinding各个参数对并发的影响,以下配置是目前实验tps较高的参数配置:

  <system.serviceModel>
    <services>
      <service name="GW.Stone.BLL.Wcf.StoneService" behaviorConfiguration="NetTcpBehavior">
        <!--自定义契约,高并发单机约1800tps,生产用配置-->
        <endpoint address="net.tcp://127.0.0.1:50061/GWStoneService" binding="customBinding" contract="GW.Stone.BLL.Wcf.IStoneService" bindingConfiguration="MySessionBinding">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>

        <!--ms-mex标准契约,并发单机约1000tps,远程服务引用及wcf测试工具调试配置。
        此处mex是个壳配置,客户端代理proxy类在添加服务器引用时,VS会自动生成对自定义契约高并发配置的app.config配置文件。-->
        <endpoint address="net.tcp://127.0.0.1:50062/GWStoneService" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
    </services>

    <!--behavior 元素包含服务行为的设置集合。-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="NetTcpBehavior">
          <serviceMetadata httpGetEnabled="false" />
          <!--是否在错误中包含有关异常的详细信息-->
          <serviceDebug includeExceptionDetailInFaults="True" />

          <!--
          使用 ServiceThrottlingBehavior 类可控制各种吞吐量设置,这些设置可以让您优化服务性能,以帮助避免应用程序内存不足。
          http://msdn.microsoft.com/zh-cn/library/system.servicemodel.description.servicethrottlingbehavior(v=vs.110).aspx
          MaxConcurrentCalls 属性可限制当前在整个 ServiceHost 中处理的消息数目。默认为处理器计数的 16 倍。
          MaxConcurrentInstances 属性可限制在整个 ServiceHost 中一次执行的 InstanceContext 对象数。默认为 MaxConcurrentSessions 的值和 MaxConcurrentCalls 值的总和。
          MaxConcurrentSessions 属性可限制 ServiceHost 对象可以接受的会话数。服务主机可接受的最大会话数。 默认为处理器计数的 100 倍。
          因为运行时负载平衡需要运行应用程序的经验,所以,通过应用程序配置文件使用 ServiceThrottlingBehavior 是修改执行过程以获得最佳服务性能的最常用方法。
          配置文件中使用 <serviceThrottling> 元素来设置此属性的值。
          -->
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <bindings>
      <customBinding>
        <!--WSHttpBindingBase 属性
        http://msdn.microsoft.com/zh-cn/library/vstudio/System.ServiceModel.WSHttpBindingBase_properties(v=vs.100).aspx
        -->
        <binding name="MySessionBinding">
          <!--transactionFlow 获取或设置一个值,该值指示此绑定是否应支持流动 WS-Transactions。
          如果支持事务的流动,则为 true;否则为 false。默认值为 false。-->
          <transactionFlow />

          <!--binaryMessageEncoding 定义一个在网络上以二进制形式对 Windows Communication Foundation (WCF) 消息进行编码的二进制消息编码器。
          http://msdn.microsoft.com/zh-cn/library/ms731780(v=vs.110).aspx
          -->
          <binaryMessageEncoding  />

          <!--reliableSession 获取一个对象,当使用系统提供的一个绑定时,该对象可提供对可用的可靠会话绑定元素属性的便捷访问。
          http://msdn.microsoft.com/zh-cn/library/System.ServiceModel.Channels.ReliableSessionBindingElement(v=vs.110).aspx
          maxPendingChannels 可靠会话期间可为挂起状态的最大通道数。可为挂起状态的最大通道数。 默认值为 4。 设置的值小于或等于零,或者大于 16384。
          通道在等待被接受时处于挂起状态。 一旦达到该限制,就不会创建任何通道并将其置于挂起模式,直到此数值降低(通过接受挂起的通道)。
          这是对每个侦听器的限制。当达到此阈值时如果远程应用程序尝试建立新的可靠会话,则会拒绝请求且打开操作将提示此错误。
          -->
          <reliableSession  maxPendingChannels="20"/>

          <!--tcpTransport 定义通道用于传输自定义绑定消息的 TCP 传输。
          http://msdn.microsoft.com/zh-cn/library/ms731366(v=vs.110).aspx
          listenBacklog 可为 Web 服务挂起的最大排队连接请求数。 connectionLeaseTimeout 属性限制客户端在引发连接异常之前将等待连接的持续时间。
            这是一个套接字级别属性,控制可能为 Web 服务挂起的最大排队连接请求数。
            ListenBacklog 太低时,WCF 将停止接受请求,并因此删除新连接,直到服务器承认一些现有队列连接。默认值为 16 * 处理器数。
          maxPendingConnections 获取或设置此共享服务的最大挂起连接数,默认值为 100。
          maxPendingAccepts 获取或设置共享服务侦听终结点上的最大未完成并发接受线程数。 默认值为 2。
          -->
          <tcpTransport  listenBacklog="400" maxPendingConnections="1000" maxPendingAccepts="10" />
        </binding>
      </customBinding>
    </bindings>
  </system.serviceModel>
时间: 2024-08-11 09:56:34

高并发WCF配置的相关文章

对mysql的高并发优化配置的一些思考

对mysql的高并发优化配置的一些思考 mysql的高并发优化配置方案很多,但是适应你自己的就变得很少了,我们对数据库的优化,无非就是为了应对mysql的高并发情况罢了.随着大数据的时代的到来和网络用户的增多,很多企业中,可能每天应对的数量达百万,千万,甚至上亿的pv量,这样的量已经是超过普通配置的mysql所承受的量,所以应对日益增长的pv量,我们需要对mysql做出相应的对策,进一步优化mysql,达到我们所预期的效果,预防因为高并发所引起的mysql宕机,通过调试优化mysql,我们便可以

nginx响应高并发参数配置

一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8). 2.  worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一 个进程分配

nginx 高并发参数配置及linux内核参数优化

一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8). 2.  worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到

MySQL数据库高并发优化配置

from:http://www.111cn.net/database/mysql/59776.htm MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化. 一.服务器硬件对MySQL性能的影响 ① 磁盘寻道能力(磁盘I/O),以目前高转速SCSI硬盘(7200转/秒)为例,这种硬盘理论上每秒寻道7200次,这是物理特性决定的,没有办法改变. MySQL每秒钟都在进行大量.复杂的查询操作,对磁盘的读写量可想而知.所以,通常认为磁盘I/O是制约MySQ

1支持高并发web服务器搭建

支持高并发web服务器搭建 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] CTCDN系统优化参数 关闭ipv6 避免放大攻击 开启恶意icmp错误消息保护 关闭路由转发 开启反向路径过滤 处理无源路由的包 关闭sysrq功能 core文件名中添加pid作为扩展名 开启SYN洪水攻击保护 修改消息队列长度 设置最大内存共享段大小bytes timewait的数量默认180000 系统同时保持TIME_WAIT的最大数量如果超过这个数字TIME_WAIT将立刻被清除并打印警

WCF服务在高并发情况下报目标积极拒绝的异常处理 z

http://www.cnblogs.com/kklldog/p/5037006.html wcf的监控服务,偶尔监控到目标服务会报一个目标积极拒绝的错误.一开始以为服务停止了,上服务器检查目标服务好好的活着.于是开始查原因. 一般来说目标积极拒绝(TCP 10061)的异常主要是2种可能: 1:服务器关机或者服务关闭 2:Client调用的端口错误或者服务器防火墙没开相应的端口 但是我们的服务本身是可以调用的,只是偶尔报这个错误,说明并不是这2个问题造成的.继续google,在stackove

关于WCF服务在高并发情况下报目标积极拒绝的异常处理

最近弄了个wcf的监控服务,偶尔监控到目标服务会报一个目标积极拒绝的错误.一开始以为服务停止了,上服务器检查目标服务好好的活着.于是开始查原因. 一般来说目标积极拒绝(TCP 10061)的异常主要是2种可能: 1:服务器关机或者服务关闭 2:Client调用的端口错误或者服务器防火墙没开相应的端口 但是我们的服务本身是可以调用的,只是偶尔报这个错误,说明并不是这2个问题造成的.继续google,在stackoverflow上看到这样一篇:传送门 1 2 3 4 5 6 7 8 9 10 11

Linux下配置tomcat + apr + native应对高并发

在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,这时并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来. 一.Tomcat运行模式介绍 Tomcat 有三种(bio,nio.apr) 运行模式,首先来简单介绍下: (1)BIO    BIO(blocking I/O

配置开发支持高并发TCP连接的Linux应用程序全攻略

http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480950&do=blog&id=103598 原文见:http://www.cppblog.com/flashboy/articles/47012.html1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到