Monit overvåger hjemmesidens dynamiske sider og registrerer, at statuskoden ikke er 200, og genstarter automatisk php8.3-fpm

🚀 Når en dynamisk side på et websted pludselig har en statuskode, der ikke er 200, hvordan kan PHP8.3-FPM så selvreparere på få sekunder?

🔥 PHP90-FPM livreddende konfiguration som 8.3% af operatører ikke kender! Praktisk undervisning i Monit dynamiske sideselvreparationssystem.

Tror du, at det er tilstrækkeligt at overvåge PHP-FPM-processens overlevelse? Helt forkert!
Når PHP-FPM på en server pludselig går amok, er det at kigge på procesoverlevelse som at bruge et termometer til at måle kræft - det fanger slet ikke det fatale problem.

Jeg har set for mange mennesker bevogtephp-fpm.sockOvervågningen var selvtilfreds, og som følge heraf er hjemmesiden for længst blevet en 404-kirkegård. I dag vil jeg rive denne drift- og vedligeholdelsesillusion fra hinanden og vise jer den forbandede sandhed: en levende proces ≠ en normal service.

🌪️ Destruktivt scenarie: Socket er tilsluttet, men hjemmesiden er død

bestemteEl-leverandørHjemmesidens overvågning viste, at PHP-FPM-processen kørte normalt, men brugerne klagede over betalingsfejl.

Efter lang tids søgning fandt jeg ud af, at en hukommelseslækage i et tredjepartsbibliotek forårsagede, at PHP-processen var aktiv, men fuldstændig ude af stand til at behandle anmodninger.

På nuværende tidspunkt er det at udelukkende stole på socket-detektion som at tjekke pulsen på en zombie - du kan slet ikke finde hjernen.død.

💥 En dobbeltdræbende overvågningsløsning, der undergraver kognition

Smid den forældede endimensionelle overvågning væk! De bedste eksperter bruger alle den dobbelte kvælningsstrategi med proceslag + forretningslag.

Monit overvåger hjemmesidens dynamiske sider og registrerer, at statuskoden ikke er 200, og genstarter automatisk php8.3-fpm

Følgende konfiguration vil give din server mulighed for at reparere sig selv hurtigere end drifts- og vedligeholdelsespersonalet kan rejse sig fra sengen, når der opstår problemer:

check process php8.3-fpm with pidfile /run/php/php8.3-fpm.pid
    start program = "/usr/sbin/service php8.3-fpm start"
    stop program  = "/usr/sbin/service php8.3-fpm stop"
    if failed unixsocket /run/php/php8.3-fpm.sock then restart
    if failed 
        host www.chenweiliang.com 
        port 443
        protocol https
        request "/wp-login.php"
        status = 200
        hostheader www.chenweiliang.com
        for 3 cycles
    then restart
    if 5 restarts within 5 cycles then exec "/usr/bin/systemctl restart hestia"

🔍 Fatale detaljer skjult i parametrene

hostheaderParametre er livreddende talismaner i CDN/load balancing-scenarier. Uden dem er det som at lede efter en stealth-jager med nattekikkerter - du kan ikke fange den suspenderede tilstand forårsaget af den manglende Host-header.

for 3 cyclesDette bufferperiodedesign undgår perfekt falske positiver forårsaget af netværksjitter. Det er ligesom at installere en støddæmper på overvågningssystemet for at forhindre håndrystelser i at udløse atomknappen.

• Sidsteexec "/usr/bin/systemctl restart hestia"Det er det ultimative dræbertræk. Da PHP-FPM ikke kunne genoplives 5 gange i træk, vendte jeg tabellen og genstartede hele hostingpanelet. Dette er et trick, jeg stjal fra afbrydermekanismen i Wall Streets handelssystem.

🚨 Lektioner lært af smerte og lidelse: 3 fælder, der kan få dig til at fejle

  1. SSL-certifikatsvindel: Efter en opgradering,protocol httpsHvis det ikke skrives ned, vil overvågningen altid fejlvurdere det som normalt. Senere fandt jeg ud af, at den gamle version af Monit ikke verificerede certifikatet som standard, hvilket gjorde, at jeg mistede min årsbonus.
  2. Loginside 401-fælde: glem at tilføje, når du overvåger loginsidenBasic AuthenticationSom følge heraf udløser hver test en genstart. Det er som at vande en have med en brandhane - stærk nok, men fuldstændig forkert.
  3. Log sort hul: Én gang/var/log/monit.logDa størrelsen steg til 50G, opdagede vi, at en eller anden idiot havde indstillet detektionsperioden til 1 sekund. Husk, at selve overvågningsloggen er det objekt, der skal overvåges!

💡 Bekræftelses- og fejlfindingstrin

  1. Kontrol af konfigurationssyntaks:
    monit -t
    
  2. Overbelastningskonfiguration:
    monit reload

Slutprøve

  1. Selvmordstest: Direktekill -9Afslut PHP-FPM-processen og se på genopstandelsesposterne i overvågningsloggen. Det føles som at se en zombiefilm!
  2. Giftindsprøjtning: Rediger bevidst loginsiden, så den returnerer en 503-statuskode, og observer, om overvågningssystemet kan angribe præcist. Jeg kalder denne metode "digital vaccine" - at injicere en lille mængde virus i systemet på forhånd for at tvinge overvågningssystemets immunrespons ud. Når alarmerne blinker vildt, og tjenesterne heler sig selv, vil du se den mest sexede vilje til at overleve i kodeverdenen brænde!

发表 评论

Din e-mailadresse vil ikke blive offentliggjort. 必填 项 已 用 * 标注

Rul til top