繁体   English   中英

wcf 应用程序变慢,通过回收 IIS 应用程序池纠正,我可以监视什么以查看出了什么问题

[英]wcf app slowing down, corrected by recycling IIS app pool, what can i monitor to see what is going wrong

WCF 应用程序内置于 .net 4.5,在 Windows Server 2012 R2 数据中心上运行。 IIS 8. 客户端是一个点击一次的 WPF 应用程序。

该应用程序已运行多年,但开始越来越多地陷入困境,需要应用程序池每天进行一次或两次回收。 我无法找到任何关于究竟出了什么问题的指标。 RAM 的峰值为 75%,主要保持在 50% 左右,cpu 运行在 10% 到 20% 之间。 当我回收游泳池时,那里没有什么真正改变。

我的主要线索是该应用程序使用 TCP,当我将本地调试会话切换到 HTTP 时,它再次快速运行,在 TCP 模式下它很慢。 我知道 HTTP 位于 TCP 之上,所以我想知道它是否与握手或其他有关。

TCP 绑定看起来像这样

   <binding name="TCPSecured" receiveTimeout="00:05:00" sendTimeout="00:05:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>

HTTP

<binding name="HTTPBindingConfig" receiveTimeout="00:05:00" sendTimeout="00:05:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
  <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Windows" />
  </security>
  <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>

使用资源监视器查看 TCP 连接,我看到数十个具有高延迟的,超过 200 个。不知道这意味着什么,或者它是否是新的。

使用性能监视器,我尝试从 ASP.Net 应用程序、TYCPv4 和 TCP v6 以及其他几十个应用程序中跟踪许多选择,它们都显示低活动甚至没有活动。

我对这些东西不知所措,希望人们能提供任何见解。

问题是由于 TCP 端口保持打开状态。 一旦我能够对其进行监控,就可以找到问题所在。 最终使用了 powershell 命令。

检查一个端口

$established = Get-NetTCPConnection -LocalPort 890 -State Established
$count = $established.Length
echo "OK - $count established connections on port 890 Business"

去看看他们所有人。

$netstat = netstat -aon | Select-String -pattern "TCP "
$processList = Get-Process
foreach ($result in $netstat) {
   $splitArray = $result -split " "
   $procID = $splitArray[$splitArray.length – 1]
   $processName = $processList | Where-Object {$_.id -eq $procID} |    select processname
   $splitArray[$splitArray.length – 1] = $procID + " " +      $processName.processname
   $splitArray -join " "
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM