Я не розумію масштабування WCF із безпекою/Чому процесор lsass.exe настільки високий?

У мене є служба WCF з приблизно 500 клієнтами, які дзвонять кожні 3 хвилини. Процес lsass.exe використовує 95% мого центрального процесора, коли служба ввімкнена.
Я зробив тест, і кожен раз, коли клієнт дзвонить,% lsass CPU збільшується до приблизно 7. Тому я розумію, чому сервер уповільнює дзвінок, коли кілька сотень надсилають дзвінки одночасно.
Те, що я не розумію, чому lsass використовується взагалі? Я використовую CustomBinding на основі безпеки WSHttpBinding з рівнем повідомлення за допомогою Сертифікатів. Випадок/паралельність - PerCall/Одиночна (хоча я спробував практично кожну комбінацію цих двох без змін), і він розміщений в IIS 6.
Я думаю, що для кожного дзвінка lsass перевіряє сертифікат, і це як-то займає багато процесорів? Чи є якийсь спосіб зменшити це? Я знаю, що люди масштабували служби WCF на набагато більшій кількості, так що я роблю неправильно?

П.С. Деяка додаткова інформація: у мене є трасування, і перше, що зазвичай входить до системи, - це

<traceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Warning">
    <traceIdentifier>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[]&amp; outputs)

Мій журнал IIS повний

200 0 64
500 0 64
200 0 1236
500 0 1236

Переважно останні два

Edit: Service config:

<?xml version="1.0"?>

  
    
  
  
    
  
  
  
    
    
      
    
  

  
    
      
        
        
        
        
      
    
    
      
        
          
          
            
          
        
      
      
        
          <transactionFlow />
          
            
            
            
          
          
            
          
          
        
      
    
    
      
        
          
            
            
              
            
          
          
          
          
        
      
    
    
  

Клієнти використовують CustomBinding. Проблема все-таки виникає з WS обов'язковим, хоча. Насправді я зробив CustomBinding, щоб вирішити проблему, коли сервіс закінчився очікуваними сесіями.

5
Покажіть конфігурацію вашої служби.
додано Автор Ladislav Mrnka, джерело

1 Відповіді

Отже, я нарешті отримав все, що працює знову, більш-менш. Моя проблема полягала в тому, що всі клієнти намагалися одночасно телефонувати, і це просто перевантажило сервер. Я встановив програму IIS, щоб відхилити весь вхідний трафік, а потім повільно додавав групи IP, доки вони, нарешті, не змогли з'єднатися.

Lsass все ще використовує велику кількість процесорів, що є неприйнятним. Мені доведеться знайти інший метод безпеки (крім сертифікатів), який швидше і не робить lsass з розуму, тому що у нас сотні клієнтів.

0
додано