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