EAS 代理失敗會導致行動裝置無法同步

症狀

請想像這個情境。  使用者透過 CAS (CAS 代理從面向網際網路的 CAS 伺服器連接內部用戶端存取伺服器) CAS 介面。  當行動裝置使用 EAS) Exchange ActiveSync (並在 24 小時內建立數千個連線時,每個裝置無法同步。 

在這種情況下,你可能會在申請事件日誌中看到以下內容:

記錄檔名稱:應用程式
資料來源:MSExchange ActiveSync
日期:mm/dd/yyyy hh:mm:ss PM
事件編號:1034
任務類別:設定
等級:警告
關鍵字:類別
使用者:無資料
電腦:CAS.contoso.com
說明:webserver.contoso.com 的代理請求已逾時。

你也可能在 CAS 伺服器的 IIS 日誌中看到許多類似的條目:

YYYY-MM-DD HH:MM:SS 192.168.0.1 發佈 /Microsoft-Server-ActiveSync/default.eas 用戶=USER&DeviceId=DEVICEINFO&DeviceType=TYPE&Cmd=Ping&Log=PrxTo:mail.contoso.com_LdapC3_Error:AirSyncPermanentException%3a+_Mbx:mbx.contoso.com_DCNAME/DC.contoso.com_Budget: (D) Conn%3a1%2cHangingConn%3a0%2cAD%3a%24null%2f%24null%2f0%25%2cCAS%3a%24null%2f%24null%2f0%25%2cAB%3a%24null%2f%24null%2f0%25%2cRPC%3a%24null%2f%24null%2f0%25%2cFC%3a1000%2f0%2cPolicy%3aDefaultThrottlingPolicy%5POLICYNAME%2cNorm%5bResources%3a (DC) DCNAME.contoso.com (Health%3a-1%25%2cLoad%3a0) %2c%5d_ 443 DOMAIN\USERNAME 192. 168.0.11 DEVICE/USERAGENT 500 0 0 631180

原因

有幾種可能的原因會導致效能下降。 

  • 那些造成數千次連線的裝置正在影響 CAS 上的系統資源。
  • 可能存在極長的 KeepAliveTime 設定,或 CAS 伺服器與負載平衡器、加速器或防火牆等硬體間可能的逾時不符。
  • MSExchangeSyncAppPool 已不堪負荷,無法有效處理請求。

解決方式

此問題在 Exchange Server 2010 Service Pack 1 整合更新 5 中已解決。  請參考以下知識庫文章:

2556133 使用Exchange ActiveSync的裝置無法在 2010 Exchange Server 環境中存取信箱

這次更新可能會完全解決問題。  如有需要,還有數個額外的緩解措施可能會影響此問題。

解決問題裝置
與裝置使用者合作,更新他們的裝置,或封鎖有問題的裝置。  更多資訊請參閱 Microsoft Knowlege Base 線上的以下文章:

2469722 因 Exchange 資源消耗無法使用 Exchange ActiveSync 連線

同步 KeepAliveTime 設定

同步 Exchange ActiveSync 流量必須通過的 CAS 與硬體的 KeepAliveTime 設定。  關於設定 Windows 伺服器 KeepAliveTime 的更多資訊,請參閱 Microsoft 知識庫線上的以下文章:

324270 如何在 Windows Server 2003 中加強 TCP/IP 堆疊以防阻斷服務攻擊

註解 建議KeepAliveTime設定五分鐘,並非所有組織都必須。  可以使用較長的設定,但應在 CAS 與硬體裝置間同步。  就 Exchange ActiveSync 而言,設定 KeepAliveTime 時應考慮心跳間隔。  更多資訊請參閱 Microsoft TechNet 線上的以下主題:

理解直接推送
http://technet.microsoft.com/en-us/library/aa997252.aspx

Exchange 最佳實務分析器:Exchange ActiveSync 偵測到最小心跳間隔設定為高於最大心跳間隔的值。
http://technet.microsoft.com/en-us/library/ff360297 (EXCHG.140) .aspx

修改 ApplicationHost.Config 檔案
請依照以下步驟修改 MSExchangeSyncAppPool 處理執行緒請求的方式。  這需要你在接收來自網際網路流量或內部服務代理請求的 CAS 伺服器上安裝以下熱修補程式。

2290617 修正:提供熱修正,以啟用 IIS 7 中每個應用池部分 ASP.NET 屬性的設定

註:此修正不適用於運行 Windows Server 2008 R2 的系統。

安裝修正後,請執行以下步驟:

  1. 在 CAS 上建立一個設定檔,用來設定 MSExchangeSyncAppPool。  在下方範例中,該檔案命名為 EAS_pool.config。將此檔案放入 CAS 的任何資料夾中。  在下面的範例中,檔案被放在 C:\ 中。

  2. EAS_pool.config 檔案的文字如下:

    <配置>
       <system.web>
         <applicationPool
            maxConcurrentRequestsPerCPU = “5000”
            maxConcurrentThreadsPerCPU = “0”
            requestQueueLimit=“5000” />
      </system.web>
    </配置>

  3. Applicationhost.config 檔案中,加入 ApplicationPools 元素中的 CLRConfigFile 設定,指定整合模式應用程式池的設定檔路徑。  例如,將檔案中 MSExchangeSyncAppPool 的現有文字改為:

    <應用池>
    <add name=“MSExchangeSyncAppPool” queueLength=“10000” CLRConfigFile= “C:\EAS_pool.config ”/>

  4. 重新啟動 IIS 管理員服務或重新啟動電腦。

更多資訊

欲了解更多關於 IIS 7.0 與 6.0 中 ASP.NET 線緒使用的資訊,請參閱以下 MSDN 部落格主題:

ASP.NET IIS 7.0 與 6.0 上的執行緒使用
http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx