diff options
Diffstat (limited to 'docs/manual/misc/perf-tuning.html.tr.utf8')
-rw-r--r-- | docs/manual/misc/perf-tuning.html.tr.utf8 | 263 |
1 files changed, 117 insertions, 146 deletions
diff --git a/docs/manual/misc/perf-tuning.html.tr.utf8 b/docs/manual/misc/perf-tuning.html.tr.utf8 index 4d1d7ab0..537c486f 100644 --- a/docs/manual/misc/perf-tuning.html.tr.utf8 +++ b/docs/manual/misc/perf-tuning.html.tr.utf8 @@ -26,7 +26,6 @@ <a href="../ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | <a href="../tr/misc/perf-tuning.html" title="Türkçe"> tr </a></p> </div> -<div class="outofdate">Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.</div> <p>Apache 2.x, esneklik, taşınabilirlik ve başarım arasında bir denge @@ -143,14 +142,13 @@ <code>.cgi</code> dosyalarına yapılan istekler hariç DNS sorguları iptal edilmektedir:</p> - <div class="example"><p><code> - HostnameLookups off<br /> - <Files ~ "\.(html|cgi)$"><br /> - <span class="indent"> - HostnameLookups on<br /> - </span> - </Files> - </code></p></div> + <pre class="prettyprint lang-config"> +HostnameLookups off +<Files ~ "\.(html|cgi)$"> + HostnameLookups on +</Files> + </pre> + <p>Yine de bazı CGI’lerin DNS isimlerine ihtiyacı olursa bu CGI’lerin bu ihtiyaçlarına yönelik olarak <code>gethostbyname</code> çağrıları @@ -169,14 +167,13 @@ bağın üzerinde bazı sınamalar yapmak için ek bir sistem çağrısından başka istenen her dosya için de ayrı bir çağrı yapacaktır.</p> - <div class="example"><h3>Örnek:</h3><p><code> - DocumentRoot /siteler/htdocs<br /> - <Directory /><br /> - <span class="indent"> - Options SymLinksIfOwnerMatch<br /> - </span> - </Directory> - </code></p></div> + <pre class="prettyprint lang-config"> +DocumentRoot /siteler/htdocs +<Directory /> + Options SymLinksIfOwnerMatch +</Directory> + </pre> + <p>Bu durumda <code>/index.html</code> için bir istek yapıldığında Apache, <code>/siteler</code>, <code>/siteler/htdocs</code> ve<br /> @@ -186,20 +183,17 @@ yinelenecektir. Amacınız gerçekten sembolik bağları güvenlik açısından sınamaksa bunu şöyle yapabilirsiniz:</p> - <div class="example"><p><code> - DocumentRoot /siteler/htdocs<br /> - <Directory /><br /> - <span class="indent"> - Options FollowSymLinks<br /> - </span> - </Directory><br /> - <br /> - <Directory /sitem/htdocs><br /> - <span class="indent"> - Options -FollowSymLinks +SymLinksIfOwnerMatch<br /> - </span> - </Directory> - </code></p></div> + <pre class="prettyprint lang-config"> +DocumentRoot /siteler/htdocs +<Directory /> + Options FollowSymLinks +</Directory> + +<Directory /siteler/htdocs> + Options -FollowSymLinks +SymLinksIfOwnerMatch +</Directory> + </pre> + <p>Böylece <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> altındaki dosyalar için fazladan bir çağrı yapılmasını engellemiş olursunuz. @@ -222,14 +216,13 @@ her dosya bileşeni için bu <code>.htaccess</code> dosyalarını açmaya çalışacaktır.</p> - <div class="example"><h3>Örnek:</h3><p><code> - DocumentRoot /siteler/htdocs<br /> - <Directory /><br /> - <span class="indent"> - AllowOverride all<br /> - </span> - </Directory> - </code></p></div> + <pre class="prettyprint lang-config"> +DocumentRoot /siteler/htdocs +<Directory /> + AllowOverride all +</Directory> + </pre> + <p>Bu durumda <code>/index.html</code> sayfasına yapılan bir istek için Apache, <code>/.htaccess</code>, <code>/siteler/.htaccess</code> ve @@ -249,16 +242,16 @@ isterken büyük başarım kayıplarına uğrayabilirsiniz. Böyle bir durumda sunucunun başarımını arttırmanın tek bir yolu vardır. </p> - <div class="example"><p><code> - DirectoryIndex index - </code></p></div> + <pre class="prettyprint lang-config">DirectoryIndex index</pre> + <p>Yukarıdaki gibi bir dosya ismi kalıbı kullanmak yerine, aşağıdaki gibi seçenekleri tam bir liste halinde belirtin:</p> - <div class="example"><p><code> - DirectoryIndex index.cgi index.pl index.shtml index.html - </code></p></div> + <pre class="prettyprint lang-config"> +DirectoryIndex index.cgi index.pl index.shtml index.html + </pre> + <p>Buradaki sıralama öncelik sırasını belirler; yani, öncelikli olmasını istediğiniz seçeneği listenin başına @@ -440,6 +433,12 @@ vermesi nedeniyle yüksek trafiğe sahip sunucularda <code class="module"><a href="../mod/prefork.html">prefork</a></code> modülüne göre daha iyi bir seçimdir.</li> + <li><code class="module"><a href="../mod/event.html">event</a></code> modülü <code class="module"><a href="../mod/worker.html">worker</a></code> modülü gibi + çok evreli bir modüldür, fakat aunı anda dahafazla isteğe yanıt + verecek şekilde tasarlanmıştır. Bunu, evreleri destekleyen bazı + işlemleri yapmamak suretiyle yeni isteklerle çalışacak ana evreleri + serbestleştirerek sağlar.</li> + <li><code class="module"><a href="../mod/prefork.html">prefork</a></code> modülü her biri tek bir evreye sahip çok sayıda çocuk süreç kullanımını destekler. Her süreç aynı anda tek bir bağlantıya hizmet sunar. Çoğu sistemde daha hızlı olması @@ -579,39 +578,30 @@ bağlantılar denenebilir. Gerçekte çalışan kod bu olmasa da meramımızı anlatmak için kodun şöyle bir şey olduğunu varsayabiliriz:</p> - <div class="example"><p><code> - for (;;) {<br /> - <span class="indent"> - for (;;) {<br /> - <span class="indent"> - fd_set accept_fds;<br /> - <br /> - FD_ZERO (&accept_fds);<br /> - for (i = first_socket; i <= last_socket; ++i) {<br /> - <span class="indent"> - FD_SET (i, &accept_fds);<br /> - </span> - }<br /> - rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);<br /> - if (rc < 1) continue;<br /> - new_connection = -1;<br /> - for (i = first_socket; i <= last_socket; ++i) {<br /> - <span class="indent"> - if (FD_ISSET (i, &accept_fds)) {<br /> - <span class="indent"> - new_connection = accept (i, NULL, NULL);<br /> - if (new_connection != -1) break;<br /> - </span> - }<br /> - </span> - }<br /> - if (new_connection != -1) break;<br /> - </span> - }<br /> - process the new_connection;<br /> - </span> + <pre class="prettyprint lang-c"> + for (;;) { + for (;;) { + fd_set accept_fds; + + FD_ZERO (&accept_fds); + for (i = first_socket; i <= last_socket; ++i) { + FD_SET (i, &accept_fds); + } + rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL); + if (rc < 1) continue; + new_connection = -1; + for (i = first_socket; i <= last_socket; ++i) { + if (FD_ISSET (i, &accept_fds)) { + new_connection = accept (i, NULL, NULL); + if (new_connection != -1) break; + } + } + if (new_connection != -1) break; + } + process_the(new_connection); } - </code></p></div> + </pre> + <p>Bu özet gerçeklenim bir takım açlık sorunlarına sebep olur. Bu döngünün çalışması sırasında aynı anda çok sayıda çocuk süreç yeniden @@ -648,41 +638,32 @@ bir iç döngüde sıraya sokmaktır. Döngü aşağıda örneklenmiştir (farklar vurgulanmıştır):</p> - <div class="example"><p><code> - for (;;) {<br /> - <span class="indent"> - <strong>accept_mutex_on ();</strong><br /> - for (;;) {<br /> - <span class="indent"> - fd_set accept_fds;<br /> - <br /> - FD_ZERO (&accept_fds);<br /> - for (i = first_socket; i <= last_socket; ++i) {<br /> - <span class="indent"> - FD_SET (i, &accept_fds);<br /> - </span> - }<br /> - rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);<br /> - if (rc < 1) continue;<br /> - new_connection = -1;<br /> - for (i = first_socket; i <= last_socket; ++i) {<br /> - <span class="indent"> - if (FD_ISSET (i, &accept_fds)) {<br /> - <span class="indent"> - new_connection = accept (i, NULL, NULL);<br /> - if (new_connection != -1) break;<br /> - </span> - }<br /> - </span> - }<br /> - if (new_connection != -1) break;<br /> - </span> - }<br /> - <strong>accept_mutex_off ();</strong><br /> - process the new_connection;<br /> - </span> + <pre class="prettyprint lang-c"> + for (;;) { + <strong>accept_mutex_on ();</strong> + for (;;) { + fd_set accept_fds; + + FD_ZERO (&accept_fds); + for (i = first_socket; i <= last_socket; ++i) { + FD_SET (i, &accept_fds); + } + rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL); + if (rc < 1) continue; + new_connection = -1; + for (i = first_socket; i <= last_socket; ++i) { + if (FD_ISSET (i, &accept_fds)) { + new_connection = accept (i, NULL, NULL); + if (new_connection != -1) break; + } + } + if (new_connection != -1) break; + } + <strong>accept_mutex_off ();</strong> + process the new_connection; } - </code></p></div> + </pre> + <p><code>accept_mutex_on</code> ve <code>accept_mutex_off</code> <a id="serialize" name="serialize">işlevleri</a> bir karşılıklı red semoforu oluştururlar. Mutekse aynı anda sadece bir çocuk sahip @@ -782,42 +763,32 @@ <code>lingering_close</code> adında bir işlevle gerçekler. Bu işlev kabaca şöyle görünür:</p> - <div class="example"><p><code> - void lingering_close (int s)<br /> - {<br /> - <span class="indent"> - char junk_buffer[2048];<br /> - <br /> - /* gönderen tarafı kapat */<br /> - shutdown (s, 1);<br /> - <br /> - signal (SIGALRM, lingering_death);<br /> - alarm (30);<br /> - <br /> - for (;;) {<br /> - <span class="indent"> - /* s'i okumak için, 2 saniyelik zaman aşımı ile seç */<br /> - select (s for reading, 2 second timeout);<br /> - /* Hata oluşmuşsa döngüden çık */<br /> - if (error) break;<br /> - /* s okumak için hazırsa */<br /> - if (s is ready for reading) {<br /> - <span class="indent"> - if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {<br /> - <span class="indent"> - break;<br /> - </span> - }<br /> - /* geri kalan herşey burada */<br /> - </span> - }<br /> - </span> - }<br /> - <br /> - close (s);<br /> - </span> + <pre class="prettyprint lang-c"> + void lingering_close (int s) + { + char junk_buffer[2048]; + + /* shutdown the sending side */ + shutdown (s, 1); + + signal (SIGALRM, lingering_death); + alarm (30); + + for (;;) { + select (s for reading, 2 second timeout); + if (error) break; + if (s is ready for reading) { + if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) { + break; + } + /* just toss away whatever is here */ + } + } + + close (s); } - </code></p></div> + </pre> + <p>Bağlantı sonunda bu doğal olarak biraz daha masrafa yol açar, fakat güvenilir bir gerçeklenim için bu gereklidir. HTTP/1.1'in daha yaygın |