performance etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
performance etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Haziran 2011 Perşembe

IIS 7.5 classic mode performans ayarları

IIS 7.5'de classic mod kullanımında IIS 6 için geçerli olan default değerler kullanılmaktadır. Böyle bir durumda Microsoft'un, web uygulamalarının performansını arttırmak, beklemeleri önlemek amacıyla önerdiği birkaç değişiklik gerçekleştirilebilir.

 

Default değerler

    <connectionManagement>

       <add address="*" maxconnection="2" />

   </connectionManagement>

    <httpRuntime minFreeThreads="8" minLocalRequestFreeThreads="4" ... />

    <processModel maxWorkerThreads="20" maxIoThreads="20" "  minWorkerThreads="1" minIoThreads="1"   ... />

 

Yeni değerler

    <connectionManagement>

        <add address="*" maxconnection="48" />

     </connectionManagement>

     <httpRuntime minFreeThreads="352" minLocalRequestFreeThreads="304" ... />

     <processModel maxWorkerThreads="100" maxIoThreads="100"  minWorkerThreads="10" minIoThreads="10"  ... />

 

Bu değişiklikler şu anlama geliyor:

 

•             maxconnection: Tek CPU için geçerli değer. Uygulama içinden bir web sayfasına veya web servisine aynı anda en fazla 2 istek gönderilebilir. 4 çekirdekli bir server için aynı anda en fazla 8 istek gönderilebilmesi demek. Entegrasyon ve raporlama gibi sık kullanılan servisler için kısıtlayıcı olabilir. Örneğin hastane uygulamalarında özellikle sabah saatlerinde SGK’dan hastalara provizyon ve takip numarası alırken bu ayar yapılmamışsa uzun kuyruklar oluşacaktır.

•             minworkerthreads ve miniothreads değerlerinin 1 olmasından dolayı gelen istekle birlikte yeni bir threadin oluşturulup ayağa kaldırılması gerekmekte, bu da gecikme anlamına gelmektedir.

•             maxworkerthreads ve maxiothreads'in de 20 olması çok kullanıcılı sistemlerde kuyruğa neden olabilir.

 

Default değerlerin kullanımından kaynaklanan herhangi bir bekleme, kuyruğa alma işlemi varsa bu değişiklikler sonrasında ortadan kalkacak ve CPU aynı anda daha fazla isteğe yanıt verebileceği için CPU kullanım oranı artacaktır. Bu durumda server’e bir kaç çekirdek daha eklenebilir.

 

IIS 7.5 integrated mode

Machine.config dosyasındaki processModel tag’inin önemi ortadan kalkıyor, örneğin maxworkerthread ve maxiothread gibi eskiden 20 olan varsayılan değerler cpu başına 100’e çıkarılmış durumda. Performansı etkileyebilecek yanlış bir default değer ise yine mevcut: maxConcurrentRequestsPerCPU. Bu değer default 12 olarak belirtilmiş. Microsoft’un tavsiyesi bu değerin 5000’e çıkarılması. Neden mi 5000? Okuduğum kadarıyla “büyük bir değer yapalım, ne olsun?” denmiş ve birisi 5000 demiş ve .Net Framework 4.0’da bu değer default 5000 olmuş. .Net Framework 4.0’dan eski bir versiyon kullanıyorsanız, aşağıdaki 12 olan değeri değiştirmeniz faydalı olacaktır.

 

<system.web>

   <applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>

</system.web>