簡體   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