私は3分ごとに電話をかける約500のクライアントを持つWCFサービスを持っています。 lsass.exeプロセスは、サービスがオンのときにCPUの95%を使用しています。
私はテストを行い、クライアントがコールするたびに、lsass CPUの割合は約7程度に上昇します。だから私は、何百人も同時に電話をかけているときに、サーバーが通話を遅くしている理由を理解しています。
私が理解できないことは、なぜlsassはまったく使われているのでしょうか?私は、カスタム・バインディングを使って、WSHttpBindingから、メッセージ・レベルのセキュリティー(証明書を使用)を使用しています。インスタンス/並行性はPerCall/Singleです(ただし、変更を加えずに2つの組み合わせをすべて試しましたが)。これはIIS 6でホストされています。
私の推測では、すべての呼び出しに対して、lsassは証明書をチェックしています。これは何とかCPUを必要としますか?私はそれを減らすことができるいくつかの方法はありますか?私は、人々がWCFサービスをはるかに大きな数にスケールアップしたことを知っています。だから私は間違っているのですか?
P.S.いくつかの追加情報:私は追跡しているし、通常記録される最初のものは
http://msdn.microsoft.com/en-US/library/System.ServiceModel.Activation.WebHostNoCBTSupport.aspx
Extended protection is not supported or not enabled on this platform. Please install the appropriate patch そして enable it if you want extendedProtection support for https with windows authentication.
/LM/W3SVC/920256058/Root/WCFServices/smt-7-129642078492968750
System.ServiceModel.Activation.MetabaseSettingsIis6/17731154
そしてまたたくさんある:
http://msdn.microsoft.com/en-US/library/System.ServiceModel.Security.SecuritySessionDemuxFailure.aspx
The incoming message is not part of an existing security session.
そして
System.ServiceModel.Security.SecurityNegotiationException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Cannot find the negotiation state for the context 'uuid-4caa56ff-3d38-4905-9151-ce12acdd676c-6778'.
そして
System.ServiceModel.Security.TlsnegoTokenAuthenticator
http://myserviceendpoint
System.ServiceModel.Security.SecurityNegotiationException: Cannot find the negotiation state for the context 'uuid-4caa56ff-3d38-4905-9151-ce12acdd676c-6778'.at System.ServiceModel.Security.NegotiationTokenAuthenticator`1.ProcessRequestCore(Message request) at System.ServiceModel.Security.NegotiationTokenAuthenticator`1.NegotiationHost.NegotiationSyncInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
私のIISログはいっぱいです
200 0 64
500 0 64
200 0 1236
500 0 1236
ほとんどの場合、最後の2つ
Edit: Service config:
<?xml version="1.0"?>
クライアントはすべてCustomBindingを使用しています。しかし、問題はまだWSバインディングで発生します。実際、私はCustomBindingを使って、サービスが保留中のセッションを使い果たしていた問題を解決しました。
だから、最終的には、多かれ少なかれ、すべての仕事をやり遂げました。私の問題は、すべてのクライアントが一度に電話をかけようとしていて、サーバーが過負荷になってしまったということでした。私はすべての着信トラフィックを拒否するようにIISアプリケーションを設定し、最終的にすべての接続が可能になるまでIPグループを徐々に追加しました。
Lsassは依然として大量のCPUを使用していますが、これは許容できません。私は何百ものクライアントがいるので、より高速で、lsassが狂ってしまうことのない、別のセキュリティ方法(証明書以外)を見つける必要があります。