<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_status - Apache HTTP Sunucusu Sürüm 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../">Sürüm 2.4</a> &gt; <a href="./">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_status</h1>
<div class="toplang">
<p><span>Mevcut Diller: </span><a href="../en/mod/mod_status.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_status.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_status.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_status.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_status.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Sunucu etkinliği ve başarımı hakkında bilgi sağlar.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>status_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_status.c</td></tr></table>
<h3>Özet</h3>

    <p><code>mod_status</code> modülü, sunucu yöneticisinin, HTTP sunucusunun
      ne kadar başarılı olduğu hakkında bilgi edinmesini sağlar. Bilgiler,
      kolayca okunabilen bir HTML sayfası olarak sunulur ve o anki sunucu
      istatistiklerinden oluşur. Gerekirse sayfa kendiliğinden tazelenebilir
      (uyumlu bir tarayıcı gerekir). Diğer sayfa o anki sunucu durumunu makine
      tarafından okunabilen biçimde listeler.</p>

    <p>Sunulan bilgiler şunlardır:</p>

    <ul>
      <li>İstekleri sunan çocuk süreç sayısı</li>

      <li>Boştaki çocuk süreçlerin sayısı</li>

      <li>Her çocuk sürecin durumu, çocuk sürecin işleme tabi tuttuğu istek
        sayısı ve sunduğu bayt sayısı (*)</li>

      <li>Toplam erişim sayısı ve sunulan toplam bayt sayısı (*)</li>

      <li>Sunucunun kaç kere başlatıldığı/yeniden başlatıldığı ve ne kadar
        zamandır çalışmakta olduğu</li>

      <li>Saniyedeki ortalama istek sayısı, saniyedeki bayt sayısı ve istek
        başına ortalama bayt sayısı (*)</li>

      <li>Birlikte tüm çocuk süreçler tarafınan toplamda ve her çocuk süreç
        tarafından ayrı ayrı kullanılan o anki işlemci zamanı yüzdesi (*)</li>

      <li>O an işlem görmekte olan konakların ve isteklerin sayısı (*)</li>
    </ul>

    <p>"(*)" imli bilgiler sadece <code class="directive"><a href="../mod/core.html#extendedstatus">ExtendedStatus</a></code> yönergesinin değeri <code>On</code> olduğu
      takdirde mevcuttur. 2.3.6 sürümünde, bu modulün yüklenmesi öntanımlı
      olarak <code class="directive"><a href="../mod/core.html#extendedstatus">ExtendedStatus</a></code> yönergesinin
      değerini <code>On</code> yapacaktır.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Durum Bilgisi Desteğinin Etkinleştirilmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#autoupdate">Sayfanın Tazelenmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#machinereadable">Makine Tarafından Okunabilen Durum Dosyası</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Sorun gidermek için server-status kullanımı</a></li>
</ul><h3 class="directives">Yönergeler</h3>
<p>Bu modül yönerge içermez.</p>
<h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_status">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_status">Report a bug</a></li></ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="#comments_section">Yorum</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Durum Bilgisi Desteğinin Etkinleştirilmesi</a></h2>
    

    <p>Durum raporları, sadece example.com alanından ve sadece tarayıcılar için
      etkin kılınmak istenirse <code>httpd.conf</code> dosyasına şu satırlar
      eklenebilir:</p>

<pre class="prettyprint lang-config">&lt;Location "/server-status"&gt;
    SetHandler server-status
    Require host example.com
&lt;/Location&gt;</pre>


    <p>Sunucu istatistiklerine tarayıcınızla erişmek isterseniz,
      <code>http://sunucunuzun.ismi.buraya/server-status</code>
      şeklinde bir istek yapabilirsiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="autoupdate" id="autoupdate">Sayfanın Tazelenmesi</a></h2>

    
    <p>Tarayıcınız “tazeleme” yeteneğine sahipse durum sayfası düzenli
      aralıklarla güncellenecektir. Sayfanın N saniyede bir güncellenmesini
      isterseniz isteği şöyle yapabilirsiniz:<br />
      <code>http://sunucunuzun.ismi.buraya/server-status?refresh=N</code></p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="machinereadable" id="machinereadable">Makine Tarafından Okunabilen Durum Dosyası</a></h2>

    
    <p>Durum dosyasının makine tarafından okunabilen sürümüne
      <code>http://sunucunuzun.ismi.buraya/server-status?auto</code>
      şeklinde bir istek yaparak erişebilirsiniz. Bu, kendiliğinden çalıştığı
      takdirde yararlıdır; Apache HTTP Sunucusu kurulumunuzun
      <code>/support</code> dizininde bulunan <code>log_server_status</code>
      isimli Perl betiğine bakınız.</p>

    <div class="note"><h3>Güvenlik</h3>
      <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> sunucuya yüklendiği takdirde
       istatistikleri raporlama yeteneği dizin içi yapılandırma dosyaları
       (<code>.htaccess</code> gibi) dahil <em>tüm</em> yapılandırma dosyaları
       için kullanılabilir olacaktır. Bu durum güvenlik ile ilgili olarak
       siteniz için içinden çıkılması güç durumlara yol açabilir (çapanoğlu
       durumu).</div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="troubleshoot" id="troubleshoot">Sorun gidermek için server-status kullanımı</a></h2>
    

    <p>Sunucunuzun kullanılabilir tüm özkaynakları (işlemci veya bellek)
      sömürdüğü ve sizin de bu soruna hangi istemcilerin veya isteklerin yol
      açtığını saptamak istediğiniz durumda sorunu gidermek için başlangıç yeri
      olarak  <code>server-status</code> sayfası kullanılabilir.</p>

    <p>Önce <code class="directive"><a href="../mod/core.html#extendedstatus">ExtendedStatus</a></code> yönergesine On
      atadığınızsan emin olun. Böylece her çocuk süreç veya evre için tüm istek
      ve istemci bilgilerini görebilirsiniz.</p>

    <p>(<code>top</code> veya benzeri bir süreç izleme aracı kullanarak) Artık
      kendi süreç listenize  ana zanlılar olan süreçleri bulmak için
      bakabilirsiniz. Sorunun çeşidine bağlı olarak <code>top</code> çıktısını
      işlemci kullanımına veya bellek kullanımına göre sıralatabilirsiniz.</p>

  <p><code>server-status</code> sayfasını yeniden yükleyip bu süreç
    kimliklerine bakın. Böylece, bu süreçler tarafından hangi isteklerin hangi
    istemcilere sunulduğunu görebilirsiniz. İstekler kısa sürelerle görünürler,
    bu bakımdan iş üstünde yakalamak için çeşitli denemeler yapmanız
    gerekebilir.</p>

    <p>Bu işlem, yük sorununuzdan birinci derecede sorumlu istek türleri veya
      istemciler hakkında bir fikir verecektir. Çoğu durumda belli bir HTTP
      uygulamasının yanlış davrandığını veya belli bir istemcinin sitenize
      saldırmakta olduğunu farkedersiniz.</p>

</div>
</div>
<div class="bottomlang">
<p><span>Mevcut Diller: </span><a href="../en/mod/mod_status.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_status.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_status.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_status.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_status.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorum</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_status.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2019 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>