Apache HTTP -palvelimen pysäyttäminen ja uudelleenkäynnistäminen
Siro uudelleenkäynnistys
Signaali: USR1 apachectl -k graceful
Signaali USR1
tai graceful
saa vanhempaprosessin neuvomaan lapsia poistumaan heidän nykyisen pyynnönsä jälkeen (tai poistumaan heti, jos he haluavat ”ei palvele mitään). Vanhempi lukee määritystiedostot uudelleen ja avaa lokitiedostot uudelleen. Kun jokainen lapsi kuolee, vanhempi korvaa sen lapsella kokoonpanon uudesta sukupolvesta, joka alkaa palvella uusia pyyntöjä välittömästi.
Tämä koodi on suunniteltu noudattamaan aina MPM: ien prosessinohjausdirektiiviä, joten asiakkaiden palvelemiseen käytettävissä olevien prosessien ja ketjujen määrä pidetään asianmukaisissa arvoissa koko uudelleenkäynnistysprosessin ajan. Lisäksi se kunnioittaa StartServers
seuraavalla tavalla: jos sekunnin kuluttua vähintään StartServers
uusia lapsia ei ole luotu, luo sitten tarpeeksi löysääsi. Siksi koodi yrittää ylläpitää sekä palvelimen nykyiselle kuormitukselle sopivan lasten määrän että kunnioittaa toiveitasi parametrilla StartServers
.
div id = ”b0805b5965″>
huomaa, että palvelintilastoja ei ole asetettu nollaksi, kun USR1
lähetetään. Koodi on kirjoitettu sekä minimoimaan aika, jolloin palvelin ei pysty tarjoamaan uusia pyyntöjä (käyttöjärjestelmä asettaa ne jonoon, joten niitä ei missään tapauksessa menetetä), että kunnioitettava viritysparametrejasi. tee näin, sillä on pidettävä tulostaulua, jota käytetään seuraamaan kaikkia lapsia sukupolvien välillä.
Tilamoduuli käyttää myös G
-tunnusta lapsille, jotka ovat palvelevat edelleen pyynnöt, jotka aloitettiin ennen sulavan uudelleenkäynnistyksen antamista.
Tällä hetkellä USR1
-toimintoa käyttävällä lokin kierto-komentosarjalla ei ole mitään tapaa tietää varmasti, että kaikki kirjoittavat lapset uudelleenkäynnistystä edeltävä loki on valmis. Suosittelemme, että käytät sopivaa viivettä USR1
-signaalin lähettämisen jälkeen, ennen kuin teet mitään vanhan lokin kanssa. Esimerkiksi, jos useimmat osumasi vievät vähemmän yli 10 minuuttia matalan kaistanleveyden linkkien käyttäjille, voit odottaa 15 minuuttia ennen kuin teet mitään vanhan lokin kanssa.
Kun annat uudelleenkäynnistyksen, syntaksitarkistus suoritetaan ensin sen varmistamiseksi, että määritystiedostoissa ei ole virheitä. Jos määritystiedostossasi on virheitä, saat virheilmoituksen syntaksivirheestä, ja palvelin kieltäytyy käynnistämästä uudelleen. Tämä välttää tilanteen, jossa palvelin pysähtyy eikä voi sitten käynnistyä uudelleen, jolloin sinulle jää toimimaton palvelin.
Tämä ei silti takaa, että palvelin käynnistyy uudelleen oikein. Voit tarkistaa määritystiedostojen semantiikan ja syntaksin yrittämällä aloittaa httpd
ei-root-käyttäjänä. Jos virheitä ei ole, se yrittää avata pistorasiat ja lokit ja epäonnistua, koska se ei ole root (tai koska käynnissä olevalla httpd
-portilla on jo nämä portit sidottu). jostain muusta syystä se on todennäköisesti konfigurointitiedostovirhe ja virhe tulisi korjata ennen sulavan uudelleenkäynnistyksen julkaisemista.