gpt4 book ai didi

wcf - 基于 Basichttpbinding 的自托管 WCF 服务不支持超过 1000 个并发请求

转载 作者:行者123 更新时间:2023-12-05 00:22:45 28 4
gpt4 key购买 nike

我通过 BasicHttpBinding 自行托管了 WCF 服务由 ASMX Client 消耗.我正在模拟 的并发用户负载1200 用户 .服务方法接受一个字符串参数并返回一个字符串。交换的数据小于10KB。通过使用 Thread.Sleep(2000) 语句,请求的处理时间固定为 2 秒。没有什么额外的。我已经删除了所有的 DB Hits/业务逻辑。

对于 1000 个并发用户,同一段代码运行良好。当我将用户数增加到 1200 时,出现以下错误。

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at WCF.Throttling.Client.Service.Function2(String param)

此异常通常在 DataContract 不匹配和大数据交换中报告。但从来没有在做负载测试时。我已经浏览了足够多的内容并尝试了大部分选项,其中包括,
  • 在服务器端启用跟踪和消息日志。但没有记录错误。
  • 为了克服端口耗尽,MaxUserPort 设置为 65535,TcpTimedWaitDelay 设置为 30 秒。
  • MaxConcurrent Calls 设置为 600,MaxConcurrentInstances 设置为 1200。
  • 打开、关闭、发送和接收超时设置为 10 分钟。
  • HTTPWebRequest KeepAlive 设置为 false。

  • 在过去的两天里,我一直无法确定这个问题。

    任何帮助,将不胜感激。

    谢谢你。

    最佳答案

    如果服务端 WCF 日志中没有错误,我怀疑您在 HTTP.SYS 驱动程序层中遇到了某种限制,导致请求在服务应用程序看到它们之前被拒绝。我认为特定应用程序的请求队列中的默认限制可能是 1000。

    我不是 HTTP.SYS 方面的专家,但您可以通过运行以下命令获得一些见解:

    netsh http show servicestate

    关于wcf - 基于 Basichttpbinding 的自托管 WCF 服务不支持超过 1000 个并发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518906/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com