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