2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
4 <!-- English Revision: 713242:1137744 (outdated) -->
5 <!-- =====================================================
6 Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7 Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
11 Licensed to the Apache Software Foundation (ASF) under one or more
12 contributor license agreements. See the NOTICE file distributed with
13 this work for additional information regarding copyright ownership.
14 The ASF licenses this file to You under the Apache License, Version 2.0
15 (the "License"); you may not use this file except in compliance with
16 the License. You may obtain a copy of the License at
18 http://www.apache.org/licenses/LICENSE-2.0
20 Unless required by applicable law or agreed to in writing, software
21 distributed under the License is distributed on an "AS IS" BASIS,
22 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 See the License for the specific language governing permissions and
24 limitations under the License.
27 <modulesynopsis metafile="worker.xml.meta">
29 <description>Çok evreli ve çok süreçli melez bir HTTP sunucusu oluşturan çok
30 süreçlilik modülü.</description>
32 <sourcefile>worker.c</sourcefile>
33 <identifier>mpm_worker_module</identifier>
36 <p>Bu çok süreçlilik modülü (MPM) hem çok süreçli hem de çok evreli
37 olabilen melez bir sunucu oluşturur. İstekleri sunmak için evreleri
38 kullanması sebebiyle çok süreçli bir sunucudan daha az sistem kaynağı
39 harcayarak daha çok isteğe hizmet sunabilir. Bununla birlikte, herbiri
40 çok sayıda evreye sahip çok sayıda süreci canlı tutarak bir çok süreçli
41 sunucu kadar kararlı olur.</p>
43 <p>Bu MPM’i denetim altında tutmakta kullanılan en önemli yönergeler, her
44 çocuk süreç için konuşlandırılacak evre sayısını belirleyen <directive
45 module="mpm_common">ThreadsPerChild</directive> yönergesi ile devreye
46 sokulacak toplam evre sayısının azamisini belirleyen <directive
47 module="mpm_common">MaxClients</directive> yönergesidir.</p>
49 <seealso><a href="../bind.html">Apache’nin kullandığı adres ve portların
50 ayarlanması</a></seealso>
52 <section id="how-it-works"><title>Nasıl çalışır?</title>
53 <p>Çocuk süreçleri devreye almaktan tek bir süreç (ana süreç) sorumludur.
54 Her çocuk süreç <directive module="mpm_common"
55 >ThreadsPerChild</directive> yönergesinde belirtilen sayıda evre
56 konuşlandırır. Bunlardan ayrı olarak, bir dinleyici evre bağlantıları
57 dinleyip gelenleri işlenmek üzere bu sunucu evrelerinden birine
60 <p>Apache daima, gelen isteklere hizmet sunmaya hazır <dfn>yedek</dfn>
61 veya boştaki sunucu evrelerinden oluşan bir havuzu canlı tutmaya
62 çalışır. Bu suretle, istemcilere isteklerinin sunulması için yeni çocuk
63 süreçlerin çatallanmasını, dolayısıyla yeni evrelerin
64 konuşlandırılmasını beklemek gerekmez. Başlangıçta çalıştırılacak çocuk
65 süreçlerin sayısı <directive
66 module="mpm_common">StartServers</directive> yönergesinde belirtilir.
67 Apache, çalışma süresi boyunca <directive module="mpm_common"
68 >MinSpareThreads</directive> ve <directive module="mpm_common"
69 >MaxSpareThreads</directive> yönergeleri ile belirtilen sınırlar
70 dahilinde kalmak üzere gerektiğinde süreçleri öldürerek gerektiğinde
71 yenilerini devreye alarak tüm süreçlerdeki toplam evre sayısını sabit
72 tutmaya çalışır. Bu işlem kendiliğinden çok iyi yürüdüğünden bu
73 yönergelere öntanımlı değerlerinden farklı değerlerin atanması nadiren
74 gerekli olur. Aynı anda hizmet sunulabilecek istemcilerin sayısı (yani,
75 tüm süreçlerin toplam evre sayısı) <directive module="mpm_common"
76 >MaxClients</directive> yönergesi ile belirlenir. Etkin çocuk
77 süreçlerin sayısı ise <directive module="mpm_common"
78 >MaxClients</directive> yönergesindeki değerin <directive
79 module="mpm_common" >ThreadsPerChild</directive> yönergesindeki değere
80 bölünmesi ile elde edilir.</p>
82 <p>Bu iki yönerge aynı anda etkin olabilecek çocuk süreçlerin ve her
83 çocuk süreçteki sunucu evreleri sayısının üst sınırını belirler ve bu
84 sınır sadece ana sunucu tamamen durdurulup yeniden başlatılarak
85 değiştirilebilir. <directive module="mpm_common"
86 >ServerLimit</directive> yönergesinin değeri etkin çocuk süreç
87 sayısının üst sınırı olup <directive module="mpm_common"
88 >MaxClients</directive> yönergesindeki değerin <directive
89 module="mpm_common" >ThreadsPerChild</directive> yönergesindeki değere
90 bölünmesi ile elde değere eşit veya bundan küçük olması gerekir.
91 <directive module="mpm_common">ThreadLimit</directive> yönergesinin
92 değeri ise sunucu evreleri sayısının üst sınırını belirler ve <directive
93 module="mpm_common">ThreadsPerChild</directive> yönergesindeki değerden
94 büyük veya ona eşit olması gerekir.</p>
96 <p>Sonlandırma sırasında etkin çocuk süreçlere ek olarak mevcut istemci
97 bağlantılarını işleme sokmaya çalışan tek bir sunucu evresinden başka
98 fazladan bir çocuk süreç etkin kalabileceği gibi sonlandırılacak süreç
99 sayısının en fazla <directive module="mpm_common"
100 >MaxClients</directive> olması gerekirse de gerçekte sayı bundan küçük
101 olabilir. Şöyle bir işlemle tek bir çocuk sürecin sonlandırılması
102 iptal edilerek bu gibi durumlara karşı önlem alınabilir:</p>
105 <li><directive module="mpm_common"> MaxRequestsPerChild</directive>
106 yönergesinin değeri sıfır yapılır.</li>
108 <li><directive module="mpm_common">MaxSpareThreads</directive> ve
109 <directive module="mpm_common">MaxClients</directive> yönergelerinin
110 değerleri birbirine eşitlenir.</li>
113 <p><module>worker</module> modülünün öntanımlı süreç-evre yapılandırması
114 genelde şöyledir:</p>
120 MinSpareThreads 25<br />
121 MaxSpareThreads 75<br />
125 <p>Unix altında 80. portu dinleyebilmek için ana sürecin root tarafından
126 çalıştırılmış olması gerekirse de çocuk süreçler ve evreler Apache
127 tarafından daha az yetkili bir kullanıcının aidiyetinde
128 çalıştırılırlar. Apache’nin çocuk süreçlerinin kullanıcı ve gruplarını
129 ayarlamak için <directive module="mod_unixd">User</directive> ve
130 <directive module="mod_unixd">Group</directive> yönergeleri kullanılır.
131 Çocuk süreçlerin sunacakları içeriği okumaya yetkili olmaları gerekir,
132 fakat bu yetkinin mümkün olduğunca kısıtlı tutulmasına çalışılmalıdır.
133 Bundan başka, <program>suexec</program> kullanılmadığı takdirde, bu
134 yönergeler CGI betikleri tarafından miras alınacak yetkili kullanıcı
135 ve grubu da ayarlarlar.</p>
137 <p><directive module="mpm_common">MaxRequestsPerChild</directive>
138 yönergesi ana sunucunun eski süreçleri öldürüp yenilerini oluşturmayı
139 ne kadar sıklıkla yapacağını denetler.</p>
142 <directivesynopsis location="mpm_common"><name>AcceptMutex</name>
144 <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
146 <directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
148 <directivesynopsis location="mod_unixd"><name>Group</name>
150 <directivesynopsis location="mpm_common"><name>PidFile</name>
152 <directivesynopsis location="mpm_common"><name>Listen</name>
154 <directivesynopsis location="mpm_common"><name>ListenBacklog</name>
156 <directivesynopsis location="mpm_common"><name>LockFile</name>
158 <directivesynopsis location="mpm_common"><name>MaxClients</name>
160 <directivesynopsis location="mpm_common"><name>MaxMemFree</name>
162 <directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
164 <directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
166 <directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
168 <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
170 <directivesynopsis location="mpm_common"><name>ReceiveBufferSize</name>
172 <directivesynopsis location="mpm_common"><name>SendBufferSize</name>
174 <directivesynopsis location="mpm_common"><name>ServerLimit</name>
176 <directivesynopsis location="mpm_common"><name>StartServers</name>
178 <directivesynopsis location="mpm_common"><name>ThreadLimit</name>
180 <directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
182 <directivesynopsis location="mpm_common"><name>ThreadStackSize</name>
184 <directivesynopsis location="mod_unixd"><name>User</name>