みなさん、こんにちは。
とても寒い日が続いていますが、いかがお過ごしでしょうか。気温が低く 日照時間も短いため気分も落ち込みがちですが、せめてブログの記事だけでも エキサイティングな内容になるよう努めてまいります。
今回は、US の Dynamics CRM プレミアフィールドエンジニアリングチームが 公開しているブログより、パフォーマンスに関する記事を紹介します。 パフォーマンスを聞くだけでエキサイティングですね!!
元記事 : Enable WCF Compression to Improve CRM 2011 Network Performance
今までに一度でもネットワークトラフィックを解析したことがある方は既にお気づきだと 思いますが、Internet Information Service (IIS) は、画像や JScript ファイル、CSS や HTML ページなど、様々なコンテンツを圧縮してからネットワークに送信しています。
圧縮を利用することで、データのサイズだけでなく全体の通信回数も削減できるため サーバー、クライアント間のネットワークパフォーマンスの向上が期待できます。
Microsoft Office Outlook 用 Microsoft Dynamics CRM 2011 クライアントは、サーバー との通信を行い際、Windows Communication Foundation (WCF) を利用しますが、 既定では IIS は WCF で利用する 'application/soap+xml;charset=utf-8' の mineType を圧縮しないため、Dynamics CRM 4.0 と比較してネットワークトラフィックの増加や パフォーマンスの低下が発生することがあります。
一般的な利用環境では、圧縮を有効にすることでパケットサイズが 30 - 40 % 程度減少 しますが、SSL を利用している環境では、80 - 90 % 程度パケットサイズが削減されることも あります。
以下の表は IIS での圧縮を行う前と後の比較を行っています。このデータはカスタマイズを 一切行っていない Dynamics CRM 2011 環境で、データもサンプルデータのみの場合です。 こちらの結果より Outlook で複数のビューを参照した場合のパフォーマンスが向上している ことが確認できます。
ビュー
圧縮なし
圧縮あり
SSL 環境で圧縮あり
活動
Bytes Sent: 82,234
Bytes Received: 971,139
Bytes Received: 722,786
Bytes Sent: 53,249
Bytes Received: 36,658
取引先企業
Bytes Sent: 105,084
Bytes Received: 219,102
Bytes Received: 149,424
Bytes Sent: 67,586
Bytes Received: 25,837
取引先担当者
Bytes Sent: 78,286
Bytes Received: 177,504
Bytes Received: 122,090
Bytes Sent: 50,283
Bytes Received: 19,791
潜在顧客
Bytes Received: 202,589
Bytes Received: 141,021
Bytes Sent: 50,274
Bytes Received: 19,769
※補足 : IIS で圧縮を有効にしているため、クライアントからの送信は圧縮の有り無しでは 影響が見られません。SSL の場合には、非 SSL 環境より通信サイズが少ないのは、WCF で 利用しているバインディングとデータの暗号化が影響しているためです。
圧縮の設定方法
圧縮の設定は、コマンドラインまたは config ファイルを修正することで変更可能です。
注意: 圧縮を利用することでネットワーク帯域は節約できますが、CPU 使用率が上がります。 必要に応じて CPU 利用率の監視をお勧めします。
コマンドラインを利用した設定方法
a. Dynamics CRM サーバー上でコマンドプロンプトを開きます。
b. 以下のコマンドを実行します。Run the following command:
%SYSTEMROOT%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/soap%u002bxml; charset=utf-8',enabled='true']" /commit:apphost
c. IISRESET を実行します。
ApplicationHost.Config を編集する方法
a. Dynamics CRM サーバー上で、以下のファイルをメモ帳で開きます。 C:\Windows\System32\Inetsrv\Config\applicationHost.config
b. 次のセクションを探します : “<httpCompression directory=” 上記セクション配下に以下のような項目があります。 <add mimeType="application/x-javascript" enabled="true" />
c. 一番下に、以下の内容を付け足します。 <add mimeType="application/soap+xml; charset=utf-8" enabled="true" />
d. ファイルを保存して、IIRESET を実行します。
参考: IIS を利用した HTTP 圧縮の追加情報は以下のリンクをご覧ください。 http://technet.microsoft.com/en-us/library/cc771003(WS.10).aspx
参考:英語のドキュメントですが、以下の文書でも、パフォーマンスの最適化に関する 情報が提供されています。 Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure
まとめ
IIS の圧縮を利用する場合、CPU 負荷とネットワーク負荷のバランスを 取ることが重要にはなりますが、是非一度検証環境等でお試しください。
- Dynamics CRM サポート 中村 憲一郎