switch to a 60 bit hash
[httpd-crcsyncproxy.git] / docs / manual / stopping.xml.es
blob2144dfadb7309de7aab92808af9d74da5fa15345
1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
4 <!-- English Revision: 105989:655319 (outdated) -->
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
14      http://www.apache.org/licenses/LICENSE-2.0
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
23 <manualpage metafile="stopping.xml.meta">
25   <title>Iniciar y Parar el servidor Apache</title>
27 <summary>
28     <p>Este documento explica como iniciar y parar el servidor Apache
29      en sistemas tipo Unix. Los usuarios de Windows NT, 2000 y XP
30      deben consultar la secci&#243;n <a
31      href="platform/windows.html#winsvc">Ejecutar Apache como un
32      servicio</a> y los usuario de Windows 9x y ME deben consultar <a
33      href="platform/windows.html#wincons">Ejecutar Apache como una
34      Aplicaci&#243;n de Consola</a> para obtener informaci&#243;n
35      sobre como controlar Apache en esas plataformas.</p>
36 </summary>
38 <seealso><a href="programs/httpd.html">httpd</a></seealso>
39 <seealso><a href="programs/apachectl.html">apachectl</a></seealso>
41 <section id="introduction"><title>Introducci&#243;n</title>
43     <p>Para parar y reiniciar Apache, hay que enviar la se&#241;al
44     apropiada al proceso padre <code>httpd</code> que se est&#233;
45     ejecutando.  Hay dos maneras de enviar estas se&#241;ales.  En
46     primer lugar, puede usar el comando de Unix <code>kill</code> que
47     env&#237;a se&#241;ales directamente a los procesos. Puede que
48     tenga varios procesos <code>httpd</code> ejecutandose en su
49     sistema, pero las se&#241;ales deben enviarse solamente al proceso
50     padre, cuyo pid est&#225; especificado en la directiva <directive
51     module="mpm_common">PidFile</directive>. Esto quiere decir que no
52     debe necesitar enviar se&#241;ales a ning&#250;n proceso excepto
53     al proceso padre. Hay tres se&#241;ales que puede enviar al
54     proceso padre: <code><a href="#term">TERM</a></code>, <code><a
55     href="#hup">HUP</a></code>, y <code><a
56     href="#graceful">USR1</a></code>, que van a ser descritas a
57     continuaci&#243;n.</p>
59     <p>Para enviar una se&#241;al al proceso padre debe escribir un
60     comando como el que se muestra en el ejemplo:</p>
62 <example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>
64     <p>La segunda manera de enviar se&#241;ales a los procesos
65     <code>httpd</code> es usando las opciones de l&#237;nea de
66     comandos <code>-k</code>: <code>stop</code>, <code>restart</code>,
67     y <code>graceful</code>, como se muestra m&#225;s abajo.  Estas
68     opciones se le pueden pasar al binario <a
69     href="programs/httpd.html">httpd</a>, pero se recomienda que se
70     pasen al script de control <a
71     href="programs/apachectl.html">apachectl</a>, que a su vez los
72     pasar&#225; a <code>httpd</code>.</p>
74     <p>Despu&#233;s de haber enviado las se&#241;ales que desee a
75     <code>httpd</code>, puede ver como progresa el proceso
76     escribiendo:</p>
78 <example>tail -f /usr/local/apache2/logs/error_log</example>
80     <p>Modifique estos ejemplos para que coincidan con la
81     configuraci&#243;n que tenga especificada en las directivas
82     <directive module="core">ServerRoot</directive> y <directive
83     module="mpm_common">PidFile</directive> en su fichero principal de
84     configuraci&#243;n.</p>
85 </section>
87 <section id="term"><title>Parar Apache</title>
89 <dl><dt>Se&#241;al: TERM</dt>
90 <dd><code>apachectl -k stop</code></dd>
91 </dl>
93     <p>Enviar las se&#241;ales <code>TERM</code> o <code>stop</code>
94     al proceso padre hace que se intenten eliminar todos los procesos
95     hijo inmediatamente. Esto puede tardar algunos minutos. Una vez
96     que hayan terminado todos los procesos hijo, terminar&#225; el
97     proceso padre. Cualquier petici&#243;n en proceso terminar&#225;
98     inmediatanmente, y ninguna petici&#243;n posterior ser&#225;
99     atendida.</p>
100 </section>
102 <section id="graceful"><title>Reinicio Graceful</title>
104 <dl><dt>Se&#241;al: USR1</dt>
105 <dd><code>apachectl -k graceful</code></dd>
106 </dl>
108     <p>Las se&#241;ales <code>USR1</code> o <code>graceful</code>
109     hacen que el proceso padre <em>indique</em> a sus hijos que
110     terminen despu&#233;s de servir la petici&#243;n que est&#233;n
111     atendiendo en ese momento (o de inmediato si no est&#225;n
112     sirviendo ninguna petici&#243;n). El proceso padre lee de nuevo
113     sus ficheros de configuraci&#243;n y vuelve a abrir sus ficheros
114     log. Conforme cada hijo va terminando, el proceso padre lo va
115     sustituyendo con un hijo de una nueva <em>generaci&#243;n</em> con
116     la nueva configuraci&#243;n, que empeciezan a servir peticiones
117     inmediatamente.</p>
119     <note>En algunas plataformas que no permiten usar
120     <code>USR1</code> para reinicios graceful, puede usarse una
121     se&#241;al alternativa (como <code>WINCH</code>). Tambien puede
122     usar <code>apachectl graceful</code> y el script de control
123     enviar&#225; la se&#241;al adecuada para su plataforma.</note>
125     <p>Apache est&#225; dise&#241;ado para respetar en todo momento la
126     directiva de control de procesos de los MPM, as&#237; como para
127     que el n&#250;mero de procesos y hebras disponibles para servir a
128     los clientes se mantenga en los valores adecuados durante el
129     proceso de reinicio.  A&#250;n m&#225;s, est&#225; dise&#241;ado
130     para respetar la directiva <directive
131     module="mpm_common">StartServers</directive> de la siguiente
132     manera: si despu&#233;s de al menos un segundo el nuevo hijo de la
133     directiva <directive module="mpm_common">StartServers</directive>
134     no ha sido creado, entonces crea los suficientes para se atienda
135     el trabajo que queda por hacer. As&#237;, se intenta mantener
136     tanto el n&#250;mero de hijos adecuado para el trabajo que el
137     servidor tenga en ese momento, como respetar la configuraci&#243;n
138     determinada por los par&#225;metros de la directiva
139     <directive>StartServers</directive>.</p>
141     <p>Los usuarios del m&#243;dulo <module>mod_status</module>
142     notar&#225;n que las estad&#237;sticas del servidor
143     <strong>no</strong> se ponen a cero cuando se usa la se&#241;al
144     <code>USR1</code>. Apache fue escrito tanto para minimizar el
145     tiempo en el que el servidor no puede servir nuevas peticiones
146     (que se pondr&#225;n en cola por el sistema operativo, de modo que
147     se no se pierda ning&#250;n evento), como para respetar sus
148     par&#225;metros de ajuste. Para hacer esto, tiene que guardar el
149     <em>scoreboard</em> usado para llevar el registro de los procesos
150     hijo a trav&#233;s de las distintas generaciones.</p>
152     <p>El mod_status tambi&#233;n usa una <code>G</code> para indicar
153     que esos hijos est&#225;n todav&#237;a sirviendo peticiones
154     previas al reinicio graceful.</p>
156     <p>Actualmente no existe ninguna manera de que un script con un
157     log de rotaci&#243;n usando <code>USR1</code> sepa con seguridad
158     que todos los hijos que se registraron en el log con anterioridad
159     al reinicio han terminado. Se aconseja que se use un retardo
160     adecuado despu&#233;s de enviar la se&#241;al <code>USR1</code>
161     antes de hacer nada con el log antiguo. Por ejemplo, si la mayor
162     parte las visitas que recibe de usuarios que tienen conexiones de
163     baja velocidad tardan menos de 10 minutos en completarse, entoces
164     espere 15 minutos antes de hacer nada con el log antiguo.</p>
166     <note>Si su fichero de configuraci&#243;n tiene errores cuando
167     haga el reinicio, entonces el proceso padre no se reinciciar&#225;
168     y terminar&#225; con un error. En caso de un reinicio graceful,
169     tambi&#233;n dejar&#225; a los procesos hijo ejecutandose mientras
170     existan.  (Estos son los hijos de los que se est&#225; saliendo de
171     forma graceful y que est&#225;n sirviendo sus &#250;ltimas
172     peticiones.) Esto provocar&#225; problemas si intenta reiniciar el
173     servidor -- no ser&#225; posible conectarse a la lista de puertos
174     de escucha. Antes de reiniciar, puede comprobar que la sintaxis de
175     sus ficheros de configuracion es correcta con la opci&#243;n de
176     l&#237;nea de comandos <code>-t</code> (consulte <a
177     href="programs/httpd.html">httpd</a>). No obstante, esto no
178     garantiza que el servidor se reinicie correctamente. Para
179     comprobar que no hay errores en los ficheros de
180     configuraci&#243;n, puede intentar iniciar <code>httpd</code> con
181     un usuario diferente a root. Si no hay errores, intentar&#225;
182     abrir sus sockets y logs y fallar&#225; porque el usuario no es
183     root (o porque el <code>httpd</code> que se est&#225; ejecutando
184     en ese momento ya est&#225; conectado a esos puertos). Si falla
185     por cualquier otra raz&#243;n, entonces casi seguro que hay
186     alg&#250;n error en alguno de los ficheros de configuraci&#243;n y
187     debe corregir ese o esos errores antes de hacer un reinicio
188     graceful.</note>
189 </section>
191 <section id="hup"><title>Reiniciar Apache</title>
193 <dl><dt>Se&#241;al: HUP</dt>
194 <dd><code>apachectl -k restart</code></dd>
195 </dl>
197     <p>El env&#237;o de las se&#241;ales <code>HUP</code> o
198     <code>restart</code> al proceso padre hace que los procesos hijo
199     terminen como si le envi&#225; ramos la se&#241;al
200     <code>TERM</code>, para eliminar el proceso padre. La diferencia
201     est&#225; en que estas se&#241;ales vuelven a leer los archivos de
202     configuraci&#243;n y vuelven a abrir los ficheros log. Se genera
203     un nuevo conjunto de hijos y se contin&#250;a sirviendo
204     peticiones.</p>
206     <p>Los usuarios del m&#243;dulo <module>mod_status</module>
207     notar&#225;n que las estad&#237;sticas del servidor se ponen a
208     cero cuando se env&#237;a la se&#241;al <code>HUP</code>.</p>
210 <note>Si su fichero de configuraci&#243;n contiene errores, cuando
211 intente reiniciar, el proceso padre del servidor no se
212 reiniciar&#225;, sino que terminar&#225; con un error. Consulte
213 m&#225;s arriba c&#243;mo puede solucionar este problema.</note>
214 </section>
216 <section id="race"><title>Ap&#233;ndice: se&#241;ales y race conditions</title>
218     <p>Con anterioridad a la versi&#243;n de Apache 1.2b9 hab&#237;a
219     varias <em>race conditions</em> implicadas en las se&#241;ales
220     para parar y reiniciar procesos (una descripci&#243;n sencilla de
221     una race condition es: un problema relacionado con el momento en
222     que suceden las cosas, como si algo sucediera en momento en que no
223     debe, y entonces el resultado esperado no se corresponde con el
224     obtenido). Para aquellas arquitecturas que tienen el conjunto de
225     caracter&#237;sticas "adecuadas", se han eliminado tantas race
226     conditions como ha sido posible. Pero hay que tener en cuenta que
227     todav&#237;a existen race conditions en algunas arquitecturas.</p>
229     <p>En las arquitecturas que usan un <directive
230     module="mpm_common">ScoreBoardFile</directive> en disco, existe la
231     posibilidad de que se corrompan los scoreboards. Esto puede hacer
232     que se produzca el error "bind: Address already in use"
233     (despu&#233;s de usar<code>HUP</code>) o el error "long lost child
234     came home!"  (despu&#233;s de usar <code>USR1</code>). En el
235     primer caso se trata de un error irrecuperable, mientras que en el
236     segundo, solo ocurre que el servidor pierde un slot del
237     scoreboard. Por lo tanto, ser&#237;a aconsejable usar reinicios
238     graceful, y solo hacer reinicios normales de forma
239     ocasional. Estos problemas son bastante complicados de solucionar,
240     pero afortunadamente casi ninguna arquitectura necesita un fichero
241     scoreboard. Consulte la documentaci&#243;n de la directiva
242     <directive module="mpm_common">ScoreBoardFile</directive> para ver
243     las arquitecturas que la usan.</p>
245     <p>Todas las arquitecturas tienen una peque&#241;a race condition
246     en cada proceso hijo implicada en la segunda y subsiguientes
247     peticiones en una conexi&#243;n HTTP persistente
248     (KeepAlive). Puede ser que el servidor termine despu&#233;s de
249     leer la l&#237;nea de petici&#243;n pero antes de leer cualquiera
250     de las cebeceras de petici&#243;n. Hay una soluci&#243;n que fue
251     descubierta demasiado tarde para la incluirla en versi&#243;n
252     1.2. En teoria esto no debe suponer ning&#250;n problema porque el
253     cliente KeepAlive ha de esperar que estas cosas pasen debido a los
254     retardos de red y a los timeouts que a veces dan los
255     servidores. En la practica, parece que no afecta a nada m&#225;s
256     -- en una sesi&#243;n de pruebas, un servidor se reinici&#243;
257     veinte veces por segundo y los clientes pudieron navegar sin
258     problemas por el sitio web sin encontrar problemas ni para
259     descargar una sola imagen ni encontrar un solo enlace roto. </p>
260 </section>
262 </manualpage>