mirror of
https://github.com/apache/httpd.git
synced 2025-08-06 11:06:17 +00:00

Translated by: Nilgün Belma Bugüner <nilgun belgeler.org> Reviewed by: Orhan Berent <berent belgeler.org> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1309943 13f79535-47bb-0310-9956-ffa450edef68
195 lines
9.9 KiB
XML
195 lines
9.9 KiB
XML
<?xml version="1.0"?>
|
||
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
||
<?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
|
||
<!-- English Revision: 1174747 -->
|
||
<!-- =====================================================
|
||
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>
|