Rješavanje greške "Nema takve datoteke ili direktorija" uzrokovane nedosljednostima između konfiguracije praćenja Monita i PHP-FPM-a.

Krvoproliće izazvano putanjom utičnice

Priča ide ovako.

Imam prijatelja čiji se server ponovo srušio prošlog mjeseca.

Došao je kod mene i rekao da monit stalno prijavljuje greške, govoreći da ne može pronaći php-fpm socket datoteku, a zatim se servis počeo često restartovati, a opterećenje je stalno raslo. U tri sata ujutro, dobio je hitan poziv da popravi server.

Rekao sam ti da ne paničiš i da mi pokažeš zapise monitora.

Kad sam ga pogledao, vau, bio je pun ovakvih grešaka:

greška: Unix socket /run/php/php8.4-fpm.sock greška veze — Nema takve datoteke ili direktorija greška: 'php8.4-fpm' f ai led protocol test [DEFAULT] na /run/php/php8.4-fpm.sock — Ne može se kreirati unix socket za /run/php/php8.4-fpm.sock

Pitao sam ga: "Gdje ti je sada socket datoteka?"

Rekao je da ne zna, pa sam ga jednostavno instalirao sa zadanim postavkama.

Rekao sam ti da sačekaš, provjerit ću umjesto tebe.

Onda sam se prijavio na SSH i vidio da se njegova stvarna socket datoteka zove... /run/php/php8.4-fpm-etufo.org.sock.

Rekao sam, druže, tvoja putanja socketa su dvije različite stvari, bilo bi čudo kad bi mogla komunicirati.

Danas ću ovo detaljno objasniti i razmotriti, a također ću ponuditi i rješenje problema.

Misliš da te nadzor štiti, ali ti zapravo šteti.

Počnimo s razgovorom o najčešćim vrstama grešaka u monitor zapisima.

Kada ovo vidite:

greška: Greška u povezivanju Unix socketa /run/php/php8.4-fpm.sock — Nema takve datoteke ili direktorija

Ovo ukazuje na to da monit pokušava detektovati php-fpm servis putem ovog socketa, ali ne može pronaći datoteku.

Ono što se sljedeće dešava je da će monit pokušati ponovo pokrenuti servis, a logovi će pokazati:

info: 'php8.4-fpm' pokušaj ponovnog pokretanja info: 'php8.4-fpm' stop: '/usr/sbin/service php8.4-fpm stop' info: 'php8.4-fpm' start: '/usr/sbin/service php8.4-fpm start'

Izgleda prilično pametno, zar ne? Automatski se popravlja.

Ali problem je što ovo često ponovno pokretanje predstavlja pravu katastrofu.

Zamislite ovo: kada se php-fpm ponovo pokrene, svi trenutno obrađeni zahtjevi su prekinuti, sve sesije mogu biti izgubljene i sve veze je potrebno ponovo uspostaviti. Ako se više puta ponovo pokrene i ne uspije u kratkom periodu, opterećenje servera će se trenutno povećati.

Zapisnici će također otkriti više informacija, kao što su ove:

greška: 'et ufo .org' prosjek učitavanja (15min) od 8.8 odgovara ograničenju resursa [prosječno opterećenje procesora (15min) > 8.0] greška: 'et ufo .org' korištenje procesora i sistema od 33.9% odgovara ograničenju resursa [korištenje procesora i sistema > 30.0%]

Server je već bio pod velikim opterećenjem, ali je sistem za nadzor i dalje neprestano restartovao servis. Ovo nije gasilo vatru; to je samo dolivalo ulje na vatru.

Suština problema: ključ i brava se ne poklapaju.

Nakon detaljnije analize, problem je zapravo prilično jednostavan.

Putanja socketa navedena u konfiguracijskoj datoteci monitora je:/run/php/php8.4-fpm.sock

Međutim, stvarna putanja socketa na kojoj se pokreće php-fpm je:/run/php/php8.4-fpm-etufo.org.sock

Ako je jedna funkcija namijenjena detekciji datoteke A, ali druga je zapravo datoteka B, detekcija će očigledno propasti.

Ovo je kao nešto.

Imaš ključ, zaključan u drugoj sobi.

Svaki dan koristiš ključ da otvoriš vrata, ali svaki put otkriješ da se ne otvaraju, a onda kažeš da je brava pokvarena.

Zapravo, brava nije pokvarena; samo tvoj ključ ne odgovara bravi.

riješitiMonitor monitoringKonfiguracija nije u skladu sa PHP-FPM-om

Rješavanje greške "Nema takve datoteke ili direktorija" uzrokovane nedosljednostima između konfiguracije praćenja Monita i PHP-FPM-a.

Opcija 1: Promijenite konfiguraciju monitora.

Ako želite zadržati postojeću konfiguraciju socketa php-fpm-a, onda izmijenite konfiguraciju monit-a.

Pronađite konfiguracijsku datoteku za monit i izmijenite sljedeće:

if failed unixsocket /run/php/php8.4-fpm.sock then restart

Promijenite u:

if failed unixsocket /run/php/php8.4-fpm-chenweiliang.com.sock then restart

Zatim izvršite ponovno punjenje:

sudo monit reload

To je to.

Opcija 2: Promijenite konfiguraciju php-fpm-a.

Ako želite koristiti zadanu putanju, promijenite konfiguraciju bazena php-fpm.

编辑 /etc/php/8.4/fpm/pool.d/chenweiliang.com.confPromijenite naredbu za slušanje u:

listen = /run/php/php8.4-fpm.sock

Zatim ponovo pokrenite php-fpm:

sudo systemctl restart php8.4-fpm

To je to.

Oba rješenja mogu riješiti problem; koje ćete odabrati zavisi od vaših specifičnih okolnosti.

Koliko sajtova je hostovano na vašem serveru? Da li svaki sajt ima nezavisni socket? Ako postoji samo jedan sajt, podrazumevani put će biti jednostavniji.

Dozvolite mi da govorim iz srca.

Iskreno vjerujem da se ove vrste konfiguracijskih problema najlakše previde, a ipak imaju najveći utjecaj na stabilnost servera tokom održavanja.

Ako je putanja socketa pogrešno napisana, stvari na površini mogu izgledati mirno, ali u stvarnosti, sistem za nadzor stalno daje lažne alarme, servis se stalno nasumično restartuje, a opterećenje neprestano raste na neobjašnjive načine.

Možda mislite da je server prestar i da mu je potrebna nadogradnja, ali zapravo je moguće da je putanja u konfiguracijskoj datoteci pogrešna.

Kao što je jedan stariji kolega jednom rekao: "Tačnost praćenja je prva linija odbrane za osiguranje stabilnosti usluge."

Detalji određuju uspjeh ili neuspjeh, i to apsolutno važi u serverskom okruženju.

Počevši od danas, provjerite konfiguraciju praćenja. Ne dozvolite da vam ovaj naizgled jednostavan problem sruši server.

Hvala vam što ste pročitali moj članak. Vidimo se sljedeći put.

Komentari

您的邮箱地址不会被公开。必填项已用*标注

Dođite na vrh