Apache HTTP Sunucusu Sürüm 2.4

| Açıklama: | Çok evreli ve çok süreçli melez bir HTTP sunucusu oluşturan çok süreçlilik modülü. | 
|---|---|
| Durum: | MPM | 
| Modül Betimleyici: | mpm_worker_module | 
| Kaynak Dosyası: | worker.c | 
Bu çok süreçlilik modülü (MPM) hem çok süreçli hem de çok evreli olabilen melez bir sunucu oluşturur. İstekleri sunmak için evreleri kullanması sebebiyle çok süreçli bir sunucudan daha az sistem kaynağı harcayarak daha çok isteğe hizmet sunabilir. Bununla birlikte, herbiri çok sayıda evreye sahip çok sayıda süreci canlı tutarak bir çok süreçli sunucu kadar kararlı olur.
Bu MPM’i denetim altında tutmakta kullanılan en önemli yönergeler, her
      çocuk süreç için konuşlandırılacak evre sayısını belirleyen ThreadsPerChild yönergesi ile devreye
      sokulacak toplam evre sayısının azamisini belirleyen MaxRequestWorkers yönergesidir.

 CoreDumpDirectory
 CoreDumpDirectory EnableExceptionHook
 EnableExceptionHook Group
 Group Listen
 Listen ListenBacklog
 ListenBacklog MaxConnectionsPerChild
 MaxConnectionsPerChild MaxMemFree
 MaxMemFree MaxRequestWorkers
 MaxRequestWorkers MaxSpareThreads
 MaxSpareThreads MinSpareThreads
 MinSpareThreads PidFile
 PidFile ReceiveBufferSize
 ReceiveBufferSize ScoreBoardFile
 ScoreBoardFile SendBufferSize
 SendBufferSize ServerLimit
 ServerLimit StartServers
 StartServers ThreadLimit
 ThreadLimit ThreadsPerChild
 ThreadsPerChild ThreadStackSize
 ThreadStackSize User
 UserÇocuk süreçleri devreye almaktan tek bir süreç (ana süreç) sorumludur.
      Her çocuk süreç ThreadsPerChild yönergesinde belirtilen sayıda evre
      konuşlandırır. Bunlardan ayrı olarak, bir dinleyici evre bağlantıları
      dinleyip gelenleri işlenmek üzere bu sunucu evrelerinden birine
      aktarır.
Apache HTTP Sunucusu daima, gelen isteklere hizmet sunmaya hazır
      yedek
      veya boştaki sunucu evrelerinden oluşan bir havuzu canlı tutmaya
      çalışır. Bu suretle, istemcilere isteklerinin sunulması için yeni çocuk
      süreçlerin çatallanmasını, dolayısıyla yeni evrelerin
      konuşlandırılmasını beklemek gerekmez. Başlangıçta çalıştırılacak çocuk
      süreçlerin sayısı StartServers yönergesinde belirtilir.
      Apache httpd, çalışma süresi boyunca MinSpareThreads ve MaxSpareThreads yönergeleri ile belirtilen sınırlar
      dahilinde kalmak üzere gerektiğinde süreçleri öldürerek gerektiğinde
      yenilerini devreye alarak tüm süreçlerdeki toplam evre sayısını sabit
      tutmaya çalışır. Bu işlem kendiliğinden çok iyi yürüdüğünden bu
      yönergelere öntanımlı değerlerinden farklı değerlerin atanması nadiren
      gerekli olur. Aynı anda hizmet sunulabilecek istemcilerin sayısı (yani,
      tüm süreçlerin toplam evre sayısı) MaxRequestWorkers yönergesi ile belirlenir. Etkin çocuk
      süreçlerin sayısı ise MaxRequestWorkers yönergesindeki değerin ThreadsPerChild yönergesindeki değere
      bölünmesi ile elde edilir.
Bu iki yönerge aynı anda etkin olabilecek çocuk süreçlerin ve her
      çocuk süreçteki sunucu evreleri sayısının üst sınırını belirler ve bu
      sınır sadece ana sunucu tamamen durdurulup yeniden başlatılarak
      değiştirilebilir. ServerLimit yönergesinin değeri etkin çocuk süreç
      sayısının üst sınırı olup MaxRequestWorkers yönergesindeki değerin ThreadsPerChild yönergesindeki değere
      bölünmesi ile elde değere eşit veya bundan küçük olması gerekir.
      ThreadLimit yönergesinin
      değeri ise sunucu evreleri sayısının üst sınırını belirler ve ThreadsPerChild yönergesindeki değerden
      büyük veya ona eşit olması gerekir.
Sonlandırma sırasında etkin çocuk süreçlere ek olarak mevcut istemci
      bağlantılarını işleme sokmaya çalışan tek bir sunucu evresinden başka
      fazladan bir çocuk süreç etkin kalabileceği gibi sonlandırılacak süreç
      sayısının en fazla MaxRequestWorkers olması gerekirse de gerçekte sayı bundan
      küçük olabilir.  Şöyle bir işlemle tek bir çocuk sürecin sonlandırılması
      iptal edilerek bu gibi durumlara karşı önlem alınabilir:
MaxConnectionsPerChild
        yönergesinin değeri sıfır yapılır.MaxSpareThreads ve
        MaxRequestWorkers
        yönergelerinin değerleri birbirine eşitlenir.worker modülünün öntanımlı süreç-evre yapılandırması
      genelde şöyledir:
ServerLimit 16 StartServers 2 MaxRequestWorkers 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25
Unix altında 80. portu dinleyebilmek için ana sürecin root tarafından
      çalıştırılmış olması gerekirse de çocuk süreçler ve evreler Apache
      httpd tarafından daha az yetkili bir kullanıcının aidiyetinde
      çalıştırılırlar. Apache httpd’nin çocuk süreçlerinin kullanıcı ve
      gruplarını ayarlamak için User
      ve Group yönergeleri
      kullanılır.
      Çocuk süreçlerin sunacakları içeriği okumaya yetkili olmaları gerekir,
      fakat bu yetkinin mümkün olduğunca kısıtlı tutulmasına çalışılmalıdır.
      Bundan başka, suexec kullanılmadığı takdirde, bu
      yönergeler CGI betikleri tarafından miras alınacak yetkili kullanıcı
      ve grubu da ayarlarlar.
MaxConnectionsPerChild
      yönergesi ana sunucunun eski süreçleri öldürüp yenilerini oluşturmayı
      ne kadar sıklıkla yapacağını denetler.
Bu MPM, gürleyen sürü sorunu ortaya çıktığında (genelde çok sayıda
      dinlenen soket varlığında) gelen bağlantılara erişimi dizgileştirmek için
      mpm-accept muteksini kullanır. Bu muteksin gerçeklenimle
      ilgili hususları Mutex yönergesi ile
      yapılandırılabilir. Bu muteks hakkında ek bilgi  için başarımın arttırılması
      belgesine bakınız.