Dynamics CRM との通信で HTTP 401 応答を減らす方法

みなさん、こんにちは。

今回も US チームのブログより、ネットワーク通信のパフォーマンスに関する情報を
紹介したいと思います。IIS レベルの設定になりますので Microsoft Dynamics の
設置型全てのバージョンに応用が可能です。

情報元 : How to Decrease 401 Responses in CRM Web Traffic

Microsoft Dynamics CRM のような Web アプリケーションのトラフィックをモニターすると、
HTTP 応答 200 (Success) を受け取る前に、頻繁に HTTP 応答 401 (Access Denied) の
パケットがあることに気がつくと思います。Internet Explorer はまず匿名でのアクセスを
試みるため、ケルベロス認証や NTLM 認証を利用する場合は通常の動作です。

image

画像等のファイルは匿名でのアクセスが許可されているため、HTTP 応答 401 を
受け取ることなく HTTP 応答 200 を受け取っています。ASPX ページ等他のものでは、
HTTP 応答 401 がまず返され、それから認証情報を渡していることが分かります。
この場合、実際のデータを取得するまでにサーバーとクライアント間を 2 往復することになり、
結果ネットワークを圧迫します。

WAN 環境でアクセスが必要なユーザーには影響が顕著に現れます。またカスタム
ページでは、毎回 HTTP 応答 200 の前に、 HTTP 応答 401 が返されているケースも
見たことがあります。

IIS 6.0 および IIS 7.0 では、HTTP リクエストごとにクライアント認証が必要となります。
この挙動がネットワークトラフィックを増加させる原因です。以下の技術情報では、この
挙動を変更する方法が説明されています。こちらを適用することで、初めのリクエストで
クライアント認証を行い、以降 HTTP Keep-Alive セッション期間は認証が有効のまま
となります。よって HTTP 応答 401 を抑制することが可能です。

You may experience slow performance when you use Integrated Windows authentication together with the Kerberos authentication protocol in IIS 6.0

https://support.microsoft.com/kb/917557

You may experience slow performance when you use Integrated Windows authentication together with the Kerberos authentication protocol in IIS 7.0

https://support.microsoft.com/kb/954873

以下に、取引先担当者上にカスタムページを表示された場合の結果を示します。
上記の対応を行うことで、クライアント ‐ サーバー間のラウンドトリップが 40% 減少
しています。環境によりますが、多くの場合パフォーマンス向上を見込めます。

技術情報適用前後の結果

適用前 適用後 変化の割合
リクエスト数 126 リクエスト数 76 40% 減
応答コード    
HTTP/200 64 HTTP/200 64 変化なし
HTTP/401 62 HTTP/401 12 81% 減

まとめ

今回の技術情報に関しては、以前こちらの記事でも紹介しましたが、今回は
IIS6 および IIS7 両方の情報を提供しています。設置型の方のみが対象ですが
是非一度技術情報をご確認ください。

- Dynamics CRM サポート 中村 憲一郎