| <?xml version="1.0"?> | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?> | |
| <!-- English Revision: 1174747:1935407 (outdated) --> | |
| <!-- ===================================================== | |
| Translated by: Nilgün Belma Bugüner <nilgun belgeler.org> | |
| Reviewed by: Orhan Berent <berent belgeler.org> | |
| ========================================================== --> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You under the Apache License, Version 2.0 | |
| (the "License"); you may not use this file except in compliance with | |
| the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <modulesynopsis metafile="worker.xml.meta"> | |
| <name>worker</name> | |
| <description>Çok evreli ve çok süreçli melez bir HTTP sunucusu oluşturan çok | |
| süreçlilik modülü.</description> | |
| <status>MPM</status> | |
| <sourcefile>worker.c</sourcefile> | |
| <identifier>mpm_worker_module</identifier> | |
| <summary> | |
| <p>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.</p> | |
| <p>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 <directive | |
| module="mpm_common">ThreadsPerChild</directive> yönergesi ile devreye | |
| sokulacak toplam evre sayısının azamisini belirleyen <directive | |
| module="mpm_common">MaxRequestWorkers</directive> yönergesidir.</p> | |
| </summary> | |
| <seealso><a href="../bind.html">Apache HTTP Sunucusunun kullandığı adres ve | |
| portların ayarlanması</a></seealso> | |
| <section id="how-it-works"><title>Nasıl çalışır?</title> | |
| <p>Çocuk süreçleri devreye almaktan tek bir süreç (ana süreç) sorumludur. | |
| Her çocuk süreç <directive module="mpm_common" | |
| >ThreadsPerChild</directive> 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.</p> | |
| <p>Apache HTTP Sunucusu daima, gelen isteklere hizmet sunmaya hazır | |
| <dfn>yedek</dfn> | |
| 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ı <directive | |
| module="mpm_common">StartServers</directive> yönergesinde belirtilir. | |
| Apache httpd, çalışma süresi boyunca <directive module="mpm_common" | |
| >MinSpareThreads</directive> ve <directive module="mpm_common" | |
| >MaxSpareThreads</directive> 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ı) <directive module="mpm_common" | |
| >MaxRequestWorkers</directive> yönergesi ile belirlenir. Etkin çocuk | |
| süreçlerin sayısı ise <directive module="mpm_common" | |
| >MaxRequestWorkers</directive> yönergesindeki değerin <directive | |
| module="mpm_common" >ThreadsPerChild</directive> yönergesindeki değere | |
| bölünmesi ile elde edilir.</p> | |
| <p>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. <directive module="mpm_common" | |
| >ServerLimit</directive> yönergesinin değeri etkin çocuk süreç | |
| sayısının üst sınırı olup <directive module="mpm_common" | |
| >MaxRequestWorkers</directive> yönergesindeki değerin <directive | |
| module="mpm_common" >ThreadsPerChild</directive> yönergesindeki değere | |
| bölünmesi ile elde değere eşit veya bundan küçük olması gerekir. | |
| <directive module="mpm_common">ThreadLimit</directive> yönergesinin | |
| değeri ise sunucu evreleri sayısının üst sınırını belirler ve <directive | |
| module="mpm_common">ThreadsPerChild</directive> yönergesindeki değerden | |
| büyük veya ona eşit olması gerekir.</p> | |
| <p>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 <directive module="mpm_common" | |
| >MaxRequestWorkers</directive> 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:</p> | |
| <ul> | |
| <li><directive module="mpm_common">MaxConnectionsPerChild</directive> | |
| yönergesinin değeri sıfır yapılır.</li> | |
| <li><directive module="mpm_common">MaxSpareThreads</directive> ve | |
| <directive module="mpm_common">MaxRequestWorkers</directive> | |
| yönergelerinin değerleri birbirine eşitlenir.</li> | |
| </ul> | |
| <p><module>worker</module> modülünün öntanımlı süreç-evre yapılandırması | |
| genelde şöyledir:</p> | |
| <example> | |
| ServerLimit 16<br /> | |
| StartServers 2<br /> | |
| MaxRequestWorkers 150<br /> | |
| MinSpareThreads 25<br /> | |
| MaxSpareThreads 75<br /> | |
| ThreadsPerChild 25 | |
| </example> | |
| <p>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 <directive module="mod_unixd">User</directive> | |
| ve <directive module="mod_unixd">Group</directive> 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, <program>suexec</program> kullanılmadığı takdirde, bu | |
| yönergeler CGI betikleri tarafından miras alınacak yetkili kullanıcı | |
| ve grubu da ayarlarlar.</p> | |
| <p><directive module="mpm_common">MaxConnectionsPerChild</directive> | |
| yönergesi ana sunucunun eski süreçleri öldürüp yenilerini oluşturmayı | |
| ne kadar sıklıkla yapacağını denetler.</p> | |
| <p>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 | |
| <code>mpm-accept</code> muteksini kullanır. Bu muteksin gerçeklenimle | |
| ilgili hususları <directive module="core">Mutex</directive> yönergesi ile | |
| yapılandırılabilir. Bu muteks hakkında ek bilgi için <a | |
| href="../misc/perf-tuning.html">başarımın arttırılması</a> | |
| belgesine bakınız.</p> | |
| </section> | |
| <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>EnableExceptionHook</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mod_unixd"><name>Group</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>PidFile</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>Listen</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ListenBacklog</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>MaxRequestWorkers</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>MaxMemFree</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>MaxConnectionsPerChild</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>MaxSpareThreads</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>MinSpareThreads</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ReceiveBufferSize</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>SendBufferSize</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ServerLimit</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>StartServers</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ThreadLimit</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ThreadsPerChild</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mpm_common"><name>ThreadStackSize</name> | |
| </directivesynopsis> | |
| <directivesynopsis location="mod_unixd"><name>User</name> | |
| </directivesynopsis> | |
| </modulesynopsis> |