⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stopping.xml.de

📁 Apache HTTP Server 是一个功能强大的灵活的与HTTP/1.1相兼容的web服务器.这里给出的是Apache HTTP服务器的源码。
💻 DE
字号:
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"><?xml-stylesheet type="text/xsl" href="./style/manual.de.xsl"?><!-- English Revision: 151405 --><!-- Copyright 2002-2004 The Apache Software Foundation Licensed 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.--><manualpage metafile="stopping.xml.meta">  <title>Beenden und Neustarten</title><summary>    <p>Dieses Dokument umfasst das Beenden und Neustarten des    Apache auf Unix-&#228;hnlichen Systemen. Anwender von Windows NT, 2000    und XP sollten <a href="platform/windows.html#winsvc">Betreiben    des Apache als Dienst</a> lesen, w&auml;hrend hingegen Anwender von    Windows 9x sowie ME <a href="platform/windows.html#wincons">Betreiben    des Apache als Konsolenanwendung</a> lesen sollten, um mehr Informationen    zur Handhabung des Apache auf diesen Systemen zu erhalten.</p></summary><seealso><program>httpd</program></seealso><seealso><program>apachectl</program></seealso><section id="introduction"><title>Einleitung</title>    <p>Um den Apache zu stoppen oder neu zu starten, m&#252;ssen Sie    ein Signal an den laufenden <program>httpd</program>-Prozess senden. Es gibt    zwei M&#246;glichkeiten, diese Signale zu senden. Zum einen k&#246;nnen    Sie den Unix-Befehl <code>kill</code> verwenden, um den Prozessen    direkt Signale zu senden. Sie werden feststellen, dass auf Ihrem    System mehrere <program>httpd</program>-Programme laufen. Sie sollten    jedoch nicht jedem dieser Prozesse ein Signal senden, sondern nur dem    Elternprozess, dessen PID im <directive    module="mpm_common">PidFile</directive> steht. Das hei&#223;t, Sie    sollten es niemals n&#246;tig haben, einem anderen Prozess, als dem    Elternprozess, ein Signal zu senden. Es gibt drei Signale, die Sie an den    Elternprozess senden k&#246;nnen: <code><a href="#term">TERM</a></code>,    <code><a href="#hup">HUP</a></code> und    <code><a href="#graceful">USR1</a></code>, die nachfolgend beschrieben    werden.</p>    <p>Um dem Elternprozess ein Signal zu senden, verwenden Sie einen    Befehl wie z.B.:</p>    <example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>    <p>Die zweite Methode, dem <program>httpd</program>-Prozess zu    signalisieren, ist die Verwendung der <code>-k</code>-Befehlszeilenoptionen    <code>stop</code>, <code>restart</code> und <code>graceful</code>, wie    unten beschrieben. Dies sind Argumente des <program>    httpd</program>-Programms, es wird jedoch    empfohlen, sie unter Verwendung des Steuerskripts <program>    apachectl</program> zu senden, welches diese    an <program>httpd</program> durchreicht.</p>    <p>Nachdem Sie <program>httpd</program> signalisiert haben, k&#246;nnen Sie    dessen Fortschritt beobachten, indem Sie eingeben:</p>    <example>tail -f /usr/local/apache2/logs/error_log</example>    <p>Passen Sie diese Beispiele entsprechend Ihren <directive    module="core">ServerRoot</directive>- und <directive    module="mpm_common">PidFile</directive>-Einstellungen an.</p></section><section id="term"><title>Beenden</title>    <dl><dt>Signal: TERM</dt>      <dd><code>apachectl -k stop</code></dd>    </dl>    <p>Das Senden des <code>TERM</code>- oder <code>stop</code>-Signals an    den Elternprozess veranlasst diesen, sofort zu versuchen, alle seine    Kindprozesse zu beenden. Es kann einige Sekunden dauern, bis alle    Kindprozesse komplett beendet sind. Danach beendet sich der Elternprozess    selbst. Alle gerade bearbeiteten Anfragen werden abgebrochen.    Es werden keine weiteren Anfragen mehr bedient.</p></section><section id="graceful"><title>Unterbrechungsfreier Neustart</title>    <dl><dt>Signal: USR1</dt>      <dd><code>apachectl -k graceful</code></dd>    </dl>    <p>Das <code>USR1</code>- oder <code>graceful</code>-Signal    veranlasst den Elternprozess, die Kinder <em>anzuweisen</em>, sich    nach Abschlu&#223; ihrer momentanen bearbeiteten Anfrage zu beenden    (oder sich sofort zu beenden, wenn sie gerade keine Anfrage bedienen).    Der Elternprozess liest seine Konfigurationsdateien erneut ein und    &#246;ffnet seine Logdateien neu. Wenn ein Kindprozess stirbt,    ersetzt der Elternprozess ihn durch ein Kind der neuen    Konfigurations-<em>Generation</em>. Dieses beginnt sofort damit,    neue Anfragen zu bedienen.</p>    <note>Auf bestimmten Plattformen, welche kein <code>USR1</code>    f&#252;r einen unterbrechungsfreien Neustart erlauben, kann ein    alternatives Signal verwendet werden (wie z.B.    <code>WINCH</code>). Der Befehl <code>apachectl graceful</code>    sendet das jeweils richtige Signal f&#252;r Ihre Platform.</note>    <p>Der Code ist daf&#252;r ausgelegt, stets die MPM-Direktiven    zur Prozesssteuerung zu beachten, so dass die Anzahl der Prozesse    und Threads, die zur Bedienung der Clients bereitstehen, w&#228;hrend    des Neustarts auf die entsprechenden Werte gesetzt werden.    Weiterhin wird <directive module="mpm_common">StartServers</directive>    auf folgende Art und Weise interpretiert: Wenn nach einer Sekunde    nicht mindestens <directive module="mpm_common">StartServers</directive>    neue Kindprozesse erstellt wurden, dann werden, um den Durchsatz zu    beschleunigen, entsprechend weitere erstellt. Auf diese Weise versucht    der Code sowohl die Anzahl der Kinder entsprechend der Serverlast    anzupassen als auch Ihre W&#252;nsche hinsichtlich des Parameters    <directive>StartServers</directive> zu ber&#252;cksichtigen.</p>    <p>Benutzer von <module>mod_status</module> werden feststellen,    dass die Serverstatistiken <strong>nicht</strong> auf Null    zur&#252;ckgesetzt werden, wenn ein <code>USR1</code> gesendet    wurde. Der Code wurde so geschrieben, dass sowohl die Zeit minimiert    wird, in der der Server nicht in der Lage ist, neue Anfragen zu    bedienen (diese werden vom Betriebssystem in eine Warteschlange    gestellt, so dass sie auf keinen Fall verloren gehen) als auch    Ihre Parameter zur Feinabstimmung ber&#252;cksichtigt werden.    Um dies zu erreichen, muss die <em>Statustabelle</em> (Scoreboard),    die dazu verwendet wird, alle Kinder &#252;ber mehrere Generationen    zu verfolgen, erhalten bleiben.</p>    <p>Das Statusmodul benutzt au&#223;erdem ein <code>G</code>, um    diejenigen Kinder zu kennzeichen, die noch immer Anfragen bedienen,    welche gestartet wurden, bevor ein unterbrechungsfreier Neustart    veranla&#223;t wurde.</p>    <p>Derzeit gibt es keine M&#246;glichkeit f&#252;r ein    Log-Rotationsskript, das <code>USR1</code> verwendet, sicher    festzustellen, dass alle Kinder, die in ein vor dem Neustart    ge&#246;ffnetes Log schreiben, beendet sind. Wir schlagen vor, dass    Sie nach dem Senden des Signals <code>USR1</code> eine angemessene    Zeitspanne warten, bevor Sie das alte Log anfassen. Wenn beispielsweise    die meisten Ihrer Zugriffe bei Benutzern mit niedriger Bandbreite    weniger als 10 Minuten f&#252;r eine vollst&#228;ndige Antwort    ben&#246;tigen, dann k&#246;nnten Sie 15 Minuten warten, bevor Sie auf    das alte Log zugreifen.</p>    <note>Wenn Ihre Konfigurationsdatei Fehler enth&#228;lt, w&#228;hrend    Sie einen Neustart anweisen, dann wird Ihr Elternprozess nicht neu starten,    sondern sich mit einem Fehler beenden. Im Falle eines unterbrechungsfreien    Neustarts l&#228;&#223;t er die Kinder weiterlaufen, wenn er sich beendet.    (Dies sind die Kinder, die sich "sanft beenden", indem sie ihre letzte    Anfrage erledigen.) Das verursacht Probleme, wenn Sie versuchen,    den Server neu zu starten -- er ist nicht in der Lage, sich an die Ports zu    binden, an denen er lauschen soll. Bevor Sie einen Neustart    durchf&#252;hren, k&#246;nnen Sie die Syntax der Konfigurationsdateien    mit dem Befehlszeilenargument <code>-t</code> &#252;berpr&#252;fen    (siehe auch <program>httpd</program>). Das garantiert    allerdings nicht, dass der Server korrekt starten wird. Um sowohl die    Syntax als auch die Semantik der Konfigurationsdateien zu pr&#252;fen,    k&#246;nnen Sie versuchen, <program>httpd</program> als nicht-root-Benutzer    zu starten. Wenn dabei keine Fehler auftreten, wird er versuchen, seine    Sockets und Logdateien zu &#246;ffnen und fehlschlagen, da er nicht root    ist (oder weil sich der gegenw&#228;rtig laufende <program>httpd</program>    bereits diese Ports gebunden hat). Wenn er aus einem anderen Grund    fehlschl&#228;gt, dann liegt wahrscheinlich ein Konfigurationsfehler vor.    Der Fehler sollte behoben werden, bevor der unterbrechungsfreie Neustart    angewiesen wird.</note></section><section id="hup"><title>Neustarten</title>    <dl><dt>Signal: HUP</dt>      <dd><code>apachectl -k restart</code></dd>    </dl>    <p>Das Senden des Signals <code>HUP</code> oder <code>restart</code>    veranla&#223;t den Elternprozess, wie bei <code>TERM</code> alle seine    Kinder zu beenden. Der Elternprozess beendet sich jedoch nicht. Er liest    seine Konfigurationsdateien neu ein und &#246;ffnet alle Logdateien    erneut. Dann erzeugt er einen neuen Satz Kindprozesse und setzt die    Bedienung von Zugriffen fort.</p>    <p>Benutzer von <module>mod_status</module> werden feststellen, dass    die Serverstatistiken auf Null gesetzt werden, wenn ein <code>HUP</code>    gesendet wurde.</p>    <note>Wenn Ihre Konfigurationsdatei einen Fehler enth&#228;lt,    w&#228;hrend Sie einen Neustart anweisen, dann wird Ihr Elternprozess    nicht neu starten, sondern sich mit einem Fehler beenden. Lesen Sie oben,    wie Sie das vermeiden k&#246;nnen.</note></section><section id="race"><title>Anhang: Signale und Wettkampfsituationen</title>    <p>Vor der Version 1.2b9 des Apache existierten verschiedene    <em>Wettkampfsituationen</em> (race conditions), die den Neustart und    die Signale beeinflu&#223;t haben. (Eine einfache Beschreibung einer    Wettkampfsituation lautet: es ist ein zeitabh&#228;ngiges Problem; wenn    etwas zum falschen Zeitpunkt erfolgt, wird es sich nicht wie erwartet    verhalten.) Bei Architekturen mit dem "richtigen" Funktionsumfang    haben wir so viele eliminiert wie wir nur konnten. Dennoch    sollte beachtet werden, dass noch immer Wettkampfsituationen auf    bestimmten Architekturen existieren.</p>    <p>Bei Architekturen, die ein <directive    module="mpm_common">ScoreBoardFile</directive> auf Platte verwenden,    besteht die Gefahr, dass die Statustabelle besch&#228;digt wird.    Das kann zu "bind: Address already in use" ("bind: Adresse wird    bereits verwendet", nach einem <code>HUP</code>) oder "long lost    child came home!" ("Der verlorene Sohn ist heimgekehrt", nach einem    <code>USR1</code>) f&#252;hren. Ersteres ist ein schwerer Fehler,    w&#228;rend letzteres lediglich bewirkt, dass der Server einen Eintrag    in der Statustabelle verliert. So kann es ratsam sein, unterbrechungsfreie    Neustarts zusammen mit einem gelegentlichen harten Neustart zu verwenden.    Diese Probleme lassen sich nur sehr schwer umgehen, aber    gl&#252;cklicherweise ben&#246;tigen die meisten Architekturen keine    Statustabelle in Form einer Datei. Bitte lesen Sie f&#252;r Architekturen,    die sie ben&#246;tigen, die Dokumentation zu <directive    module="mpm_common">ScoreBoardFile</directive>.</p>    <p>Alle Architekturen haben in jedem Kindprozess eine kleine    Wettkampfsituation, welche die zweite und nachfolgende Anfragen    einer persistenten HTTP-Verbindung (KeepAlive) umfa&#223;t. Der Prozess    kann nach dem Lesen der Anfragezeile aber vor dem Lesen der Anfrage-Header    enden. Es existiert eine Korrektur, die f&#252;r 1.2 zu sp&#228;t kam.    Theoretisch sollte das kein Problem darstellen, da    der KeepAlive-Client derartige Ereignisse aufgrund von    Netzwerk-Latenzzeiten und Auszeiten des Servers erwarten sollte.    In der Praxis scheint keiner von beiden beeinflu&#223;t zu werden    -- in einem Testfall wurde der Server zwanzig mal    pro Sekunde neu gestartet, w&#228;hrend Clients das Angebot abgegrast    haben, ohne kaputte Bilder oder leere Dokumente zu erhalten.</p></section></manualpage>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -