Mercurial > hg > nginx-site
comparison xml/it/docs/control.xml @ 1018:19129672444e
Added italian translation.
Grazie a Angelo Papadia <angelo.papadia@gmail.com>!
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 20 Nov 2013 14:36:40 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1017:9f9a427a73eb | 1018:19129672444e |
---|---|
1 <!-- | |
2 Copyright (C) Igor Sysoev | |
3 Copyright (C) Nginx, Inc. | |
4 --> | |
5 | |
6 <!DOCTYPE article SYSTEM "../../../dtd/article.dtd"> | |
7 | |
8 <article name="Controllo di nginx" | |
9 link="/it/docs/control.html" | |
10 lang="it" | |
11 translator="Angelo Papadia" | |
12 rev="5"> | |
13 | |
14 <section> | |
15 | |
16 <para> | |
17 nginx puo' essere controllato tramite segnali. | |
18 L'ID del processo master e' scritto per default nel file | |
19 <path>/usr/local/nginx/logs/nginx.pid</path>. | |
20 E' possibile utilizzare un altro file utilizzando la direttiva | |
21 <link doc="ngx_core_module.xml" id="pid"/>, definendola all'avvio | |
22 oppure in <path>nginx.conf</path> . | |
23 Il processo master riconosce i seguenti segnali: | |
24 <note> | |
25 <table> | |
26 | |
27 <tr><td width="20%">TERM, INT</td><td>arresto rapido</td></tr> | |
28 <tr><td width="20%">QUIT</td><td>arresto controllato</td></tr> | |
29 <tr><td width="20%">HUP</td><td>ricaricamento della configurazione, | |
30 allineamento ad una diversa zona oraria (solo per FreeBSD e Linux), | |
31 riavvio di nuovi processi worker con una nuova configurazione, | |
32 spegnimento controllato dei vecchi processi worker</td></tr> | |
33 <tr><td width="20%">USR1</td><td>riapertura dei file di log</td></tr> | |
34 <tr><td width="20%">USR2</td><td>aggiornamento del file eseguibile</td></tr> | |
35 <tr><td width="20%">WINCH</td><td>arresto controllato dei processi worker</td></tr> | |
36 | |
37 </table> | |
38 </note> | |
39 </para> | |
40 | |
41 <para> | |
42 E' anche possibile controllare ciascun processo worker, | |
43 per quanto cio' non sia richiesto. | |
44 I segnali riconosciuti sono: | |
45 <note> | |
46 <table> | |
47 | |
48 <tr><td width="20%">TERM, INT</td><td>arresto rapido</td></tr> | |
49 <tr><td width="20%">QUIT</td><td>arresto controllato</td></tr> | |
50 <tr><td width="20%">USR1</td><td>riapertura dei file di log</td></tr> | |
51 <tr><td width="20%">WINCH</td><td>chiusura anomala per debugging | |
52 (richiede <link doc="ngx_core_module.xml" id="debug_points"/> ) | |
53 </td></tr> | |
54 | |
55 </table> | |
56 </note> | |
57 </para> | |
58 | |
59 </section> | |
60 | |
61 | |
62 <section id="reconfiguration" name="Cambio della configurazione"> | |
63 | |
64 <para> | |
65 Per far rileggere la configurazione a nginx, bisogna inviare | |
66 un segnale HUP al processo master. | |
67 Tale processo per prima cosa verifica la validita' sintattica | |
68 della nuova configurazione, quindi tenta di applicarla, vale a dire | |
69 di aprire i file di log e i nuovi socket di ascolto. | |
70 In caso di fallimento, annulla i cambiamenti e continua a lavorare | |
71 con la vecchia configurazione. | |
72 Invece, in caso di successo, avvia nuovi processi worker e invia a | |
73 quelli vecchi appositi segnali per chiederne l'arresto controllato. | |
74 I vecchi processi chiudono i socket di ascolto, ma continuano il | |
75 servizio per i vecchi client. | |
76 Quanto tutti i vecchi client sono stati servizi, i vecchi | |
77 processi worker terminano. | |
78 </para> | |
79 | |
80 <para> | |
81 Di seguito si illustra con un esempio. | |
82 Si immagini che nginx sia in esecuzione su FreeBSD 4.x | |
83 e che il comando | |
84 <programlisting> | |
85 ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)' | |
86 </programlisting> | |
87 produca il seguente risultato: | |
88 <programlisting> | |
89 PID PPID USER %CPU VSZ WCHAN COMMAND | |
90 33126 1 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx | |
91 33127 33126 nobody 0.0 1380 kqread nginx: worker process (nginx) | |
92 33128 33126 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
93 33129 33126 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
94 </programlisting> | |
95 </para> | |
96 | |
97 <para> | |
98 Se al processo master si invia il segnale HUP, si ottiene: | |
99 <programlisting> | |
100 PID PPID USER %CPU VSZ WCHAN COMMAND | |
101 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx | |
102 33129 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx) | |
103 33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
104 33135 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
105 33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
106 </programlisting> | |
107 </para> | |
108 | |
109 <para> | |
110 Uno dei vecchi processi worker con PID 33129 continua ad essere attivo; | |
111 dopo un po', esce: | |
112 <programlisting> | |
113 PID PPID USER %CPU VSZ WCHAN COMMAND | |
114 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx | |
115 33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
116 33135 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
117 33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
118 </programlisting> | |
119 </para> | |
120 | |
121 </section> | |
122 | |
123 | |
124 <section id="logs" name="Rotazione dei file di log"> | |
125 | |
126 <para> | |
127 Per poter ruotare i file di log, e' prima necessario cambiare loro il nome, | |
128 quindi bisogna inviare il segnale USR1 al processo master, | |
129 il quale provvede a riaprire tutti i file di log correnti e ad | |
130 assegnarli all'utente non privilegiato sotto i quali sono in | |
131 esecuzione i processi worker. | |
132 Dopo aver riaperto con successo i file, il processo master chiude tutti | |
133 i file aperti, ed invia un messaggio ai processi worker per chiedere loro | |
134 di riaprire i file; i processi worker provvedono quindi immediatamente | |
135 ad aprire i nuovi file ed a chiudere i vecchi. | |
136 Come risultato, i vecchi file sono quasi immediatamente disponibili per | |
137 eventuali attivita' successive, ad esempio per la compressione. | |
138 </para> | |
139 | |
140 </section> | |
141 | |
142 | |
143 <section id="upgrade" name="Aggiornamento al volo del file eseguibile"> | |
144 | |
145 <para> | |
146 Per poter aggiornare l'eseguibile del server, prima e' necessario | |
147 porre il nuovo file al posto del vecchio; dopo, bisogna inviare al | |
148 processo master il segnale USR2. | |
149 Il processo master provvede a rinominare il file contenente il proprio | |
150 ID di processo, aggiungendo il suffisso <path>.oldbin</path>, ad | |
151 esempio <path>/usr/local/nginx/logs/nginx.pid.oldbin</path>, | |
152 quindi avvia un nuovo file eseguibile, che a sua volta fa partire i | |
153 propri processi worker: | |
154 <programlisting> | |
155 PID PPID USER %CPU VSZ WCHAN COMMAND | |
156 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx | |
157 33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
158 33135 33126 nobody 0.0 1380 kqread nginx: worker process (nginx) | |
159 33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) | |
160 36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx | |
161 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
162 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
163 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
164 </programlisting> | |
165 </para> | |
166 | |
167 <!-- | |
168 | |
169 <para> | |
170 Il processo 36264 relativo ad un nuovo file eseguibile crea il proprio file | |
171 con l'ID di processo, aggiungendo il suffisso <path>.newbin</path>, | |
172 ad esempio <path>/usr/local/nginx/logs/nginx.pid.newbin</path>. | |
173 </para> | |
174 | |
175 --> | |
176 | |
177 <para> | |
178 A questo punto, sia i processi worker relativi al vecchio eseguibile, sia quelli | |
179 relativi al nuovo, accettano richieste. | |
180 Se al processo master e' inviato il segnale WINCH, tutti i relativi processi | |
181 worker ricevono a loro volta un segnale che chiede loro l'arresto controllato, | |
182 e quindi iniziano a spegnersi: | |
183 <programlisting> | |
184 PID PPID USER %CPU VSZ WCHAN COMMAND | |
185 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx | |
186 33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx) | |
187 36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx | |
188 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
189 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
190 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
191 </programlisting> | |
192 </para> | |
193 | |
194 <para> | |
195 <note> | |
196 Quando su Linux si usa il metodo "rtsig", i nuovi processi potrebbero non | |
197 accettare connessioni anche dopo che al processo master vecchio e' stato | |
198 inviato il segnale WINCH. | |
199 In tal caso, bisogna continuare ad inviare il segnale USR1 al nuovo processo | |
200 master, sinche' i nuovi processi iniziano ad accettare connessioni. | |
201 </note> | |
202 </para> | |
203 | |
204 <para> | |
205 In breve, i soli processi worker a processare le richieste saranno quelli nuovi: | |
206 <programlisting> | |
207 PID PPID USER %CPU VSZ WCHAN COMMAND | |
208 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx | |
209 36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx | |
210 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
211 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
212 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
213 </programlisting> | |
214 </para> | |
215 | |
216 <para> | |
217 Si noti che il vecchio processo master non chiude i suoi socket di ascolto, | |
218 e che se necessario e' possibile chiedergli di riavviare i propri | |
219 processi worker. | |
220 Se per qualche ragione il nuovo file eseguibile non lavora correttamente, | |
221 e' possibile procedere in due modi: | |
222 <list type="bullet"> | |
223 | |
224 <listitem> | |
225 <para> | |
226 inviare il segnale HUP al vecchio processo master. | |
227 Il vecchio processo master provvedera' ad avviare | |
228 nuovi processi worker, senza rileggere la configurazione. | |
229 A questo punto, tutti i nuovi processi possono essere fermati | |
230 in maniera controllata, inviando il segnale QUIT al nuovo | |
231 processo master. | |
232 </para> | |
233 </listitem> | |
234 | |
235 <listitem> | |
236 <para> | |
237 inviare il segnale TERM al nuovo processo master. | |
238 Tale processo inviare a sua volta un messaggio ai suoi processi | |
239 worker che causera' la loro chiusura immediata. | |
240 (Se per qualche ragione i nuovi processi non terminano, e' | |
241 possibile inviare loro il segnale KILL per forzarne la chiusura.) | |
242 Quando il nuovo processo master si e' chiuso, il vecchio processo | |
243 master provvedera' immediatamente ad avviare nuovi processi worker. | |
244 </para> | |
245 </listitem> | |
246 | |
247 </list> | |
248 | |
249 </para> | |
250 | |
251 <para> | |
252 Se il nuovo processo master termina, allora in vecchio processo master | |
253 provvede a cancellare il suffisso <path>.oldbin</path> dal nome del file | |
254 contenente l'ID del processo. | |
255 </para> | |
256 | |
257 <para> | |
258 Se l'aggiornamento ha successo, al vecchio processo master dovrebbe | |
259 essere inviato il segnale QUIT, in maniera che rimangano solo i | |
260 processi nuovi: | |
261 <programlisting> | |
262 PID PPID USER %CPU VSZ WCHAN COMMAND | |
263 36264 1 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx | |
264 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
265 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
266 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) | |
267 </programlisting> | |
268 </para> | |
269 | |
270 <!-- | |
271 | |
272 <para> | |
273 Per completare il processo di aggiornamento, il file | |
274 <path>/usr/local/nginx/logs/nginx.pid.newbin</path> dovrebbe essere rinominato | |
275 <path>/usr/local/nginx/logs/nginx.pid</path>. | |
276 </para> | |
277 | |
278 --> | |
279 | |
280 </section> | |
281 | |
282 </article> |