Pogreška 503 Service Unavailable: preopterećenje ili održavanje?
· 6 min čitanja
Što pogreška znači
503 je web server koji kaže: „Tu sam, ali sada vas ne mogu poslužiti.“ Za razliku od 502, ništa iza njega nije nužno pokvareno. Server namjerno šalje 503 u tri situacije: u načinu je održavanja, dosegao je ograničenje koje mora poštovati (veze, workeri, promet, ograničenje broja zahtjeva) ili je toliko preopterećen da odbacuje zahtjeve kako bi ostao živ. 503 može nositi zaglavlje Retry-After koje klijentima kaže kad se vrate; tražilice kratki 503 smatraju privremenim i ne izbacuju stranicu.
Uobičajeni uzroci
- Način održavanja ostao uključen. WordPress tijekom ažuriranja zapisuje datoteku
.maintenancei odgovara 503 dok ažuriranje ne završi. Ako se ažuriranje prekine, datoteka ostaje, a s njom i pogreška. Laravel, Magento, Drupal i većina frameworka imaju ekvivalentan prekidač. - Preopterećenje. Više zahtjeva nego što konfigurirani workeri mogu obraditi. Dosegnut je
MaxRequestWorkersu Apacheu, iscrpljenpm.max_childrenu PHP-FPM-u ili je baza podataka toliko spora da svaki worker čeka. - Ograničenje hostinga. Zajednički hostinzi ograničavaju CPU sekunde, istodobne procese ili „entry processes“ po računu. Kad se ograničenje dosegne, pristupnik hostinga odgovara 503 samo za vašu stranicu.
- Backend izvađen iz rotacije. Iza load balancera ili CDN-a 503 znači da su svi backendi pali na provjeri ispravnosti. Cloudflare prikazuje vlastitu 503 stranicu kad je izvor preopterećen ili mu je ograničen broj zahtjeva.
- Botovi i scraperi. Crawler koji dohvaća tisuće stranica ili brute-force napad na
wp-login.phpilixmlrpc.phpiscrpljuje workere pa legitimni posjetitelji dobivaju 503. - Pun disk ili iscrpljena memorija. Usluga radi, ali ne može zapisivati sesije, datoteke predmemorije ni zapisnike, a neke aplikacije u tom stanju odgovaraju 503.
Ako ste posjetitelj
Pričekajte minutu i ponovno učitajte; 503 je obično kratak. Ako stranica satima ostane na 503, vlasnik ima zaglavljen način održavanja ili problem s kapacitetom, i samo on to može popraviti.
Ako je riječ o vašoj stranici: prvo provjerite
Pokrenite provjeru ispada web stranice kako biste potvrdili 503 izvana i vidjeli je li ga poslao CDN ili vaš vlastiti server. Zatim odlučite: jeste li vi ili vaš CMS pokrenuli ažuriranje u zadnjih nekoliko minuta? Ako jeste, riječ je o načinu održavanja. Ako niste, riječ je o kapacitetu.
Na vlastitom serveru:
# radi li web server uopće?
systemctl status nginx
systemctl status apache2
# opterećenje, memorija, disk: tri broja iza većine 503
uptime
free -m
df -h
# tko trenutno bombardira stranicu?
sudo tail -n 5000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
Prosječno opterećenje daleko iznad broja CPU jezgri, manje od 100 MB slobodne memorije ili jedna IP adresa s tisućama zahtjeva u zadnjim minutama svaki za sebe objašnjava 503.
Popravci na vlastitom serveru
1. Završite zaglavljen način održavanja
WordPress: izbrišite datoteku .maintenance u korijenu stranice, zatim otvorite stranicu. Ako je ažuriranje koje ju je stvorilo prekinuto, dodatak ili jezgra mogu biti napola instalirani; ponovno pokrenite ažuriranje s nadzorne ploče ili pomoću WP-CLI-ja:
rm /var/www/example.com/.maintenance
wp core verify-checksums
wp plugin update --all
Laravel: php artisan up. Magento: bin/magento maintenance:disable. Drupal: postavite $settings['maintenance_mode'] na false ili upotrijebite drush state:set system.maintenance_mode 0.
2. Zaustavite poplavu
Blokirajte problematičnu IP adresu ili mrežu, zatim dodajte ograničenje broja zahtjeva da se sljedeći put ne ponovi.
# blokirajte jednu adresu (Debian/Ubuntu s ufw)
sudo ufw deny from 203.0.113.45
# ili pomoću nftables
sudo nft add rule inet filter input ip saddr 203.0.113.45 drop
nginx ograničenje broja zahtjeva za stranice prijave (u bloku http, zatim u server bloku):
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
location = /wp-login.php {
limit_req zone=login burst=5 nodelay;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
Apache: mod_evasive ili mod_qos rade isto; fail2ban s jailovima apache-badbots i wordpress automatski blokira ponavljače.
3. Dajte serveru kapacitet
Ako je opterećenje stvaran promet, a ne zlouporaba, podignite ograničenja workera u okviru onoga što memorija dopušta. Apache (mpm_event): MaxRequestWorkers. PHP-FPM: pm.max_children. Prvo provjerite memoriju po workeru: ps -ylC php-fpm8.3 --sort:rss. Zatim testirajte i ponovno učitajte:
sudo apachectl configtest && sudo systemctl reload apache2
sudo php-fpm8.3 -t && sudo systemctl reload php8.3-fpm
Uključite predmemoriranje stranica (WordPress: dodatak za predmemoriju ili FastCGI cache u nginxu) kako nagli porast više ne bi pokretao PHP za svaki zahtjev. Stranica iz predmemorije košta djelić milisekunde; WordPress stranica bez predmemorije košta stotine.
4. Oslobodite disk
sudo du -xh --max-depth=1 /var | sort -h | tail
sudo journalctl --vacuum-size=200M
sudo apt clean
Stare datoteke zapisnika, sigurnosne kopije čuvane na istom disku i odbjegli debug zapisnik uobičajeni su krivci.
5. Iza load balancera
Kad svi backendi odjednom padnu na provjeri ispravnosti, obično je pokvaren sam URL provjere (izbrisana stranica provjere, preusmjeravanje na HTTPS koje provjera ne slijedi), a ne svaki backend. Dohvatite URL provjere ručno s balancera.
Kad je problem vašeg hostinga
Na zajedničkom hostingu ne možete podići ograničenja. Pitajte svoj hosting koje ste ograničenje dosegli i je li riječ o vašem prometu ili drugom računu na istom serveru:
Poštovani, moja web stranica example.com odgovara „503 Service Unavailable“ otprilike od 09:10 UTC. Nisam pokrenuo ažuriranje i stranica nije u načinu održavanja. Možete li mi reći je li moj račun dosegao ograničenje resursa (CPU, procesi, memorija) ili je server preopterećen i koji su brojevi? Ako je riječ o mom računu, koje ograničenje i od kada?
Ako je odgovor „vaš račun redovito dosiže ograničenja“, ili stranicu ispravno predmemorirajte ili prijeđite na plan ili server s više kapaciteta.
Sprječavanje sljedećeg
503 se najavljuje: opterećenje polako raste, memorija ponestaje, jedna IP adresa počinje bombardirati. Provjere web stranice hvataju 503 u roku od minute; agent za servere pokazuje opterećenje, memoriju i disk prije nego što do toga dođe. Na vlastitom serveru Quick Fix oslobađa prostor na disku i ponovno pokreće zaglavljenu uslugu po fiksnoj cijeni, a Deep Fix postavlja ograničenja broja zahtjeva i predmemoriju kako bi server idući put ostao dostupan.
Što sad
Provjerite izvana
Je li stranica nedostupna svima ili samo vama i što server odgovara? Besplatno, bez registracije.
Provjera ispada web straniceIspad? Mi uskačemo.
Na vlastitom serveru ili u web prostoru s SSH pristupom: Quick Fix po fiksnoj cijeni za uobičajene uzroke, Deep Fix uz naplatu u blokovima od 15 minuta za ostalo, kroz cijelu noć i dan. Cijena prije narudžbe.
Naručite popravakViše vodiča
- Vaša web stranica ne radi. Evo što učiniti u prvih 15 minuta.
- Server ne radi: što prvo provjeriti i kojim redom
- Pogreška 502 Bad Gateway: uzroci i kako je popraviti
- Pogreška 504 Gateway Timeout: što znači i kako je popraviti
- DNS_PROBE_FINISHED_NXDOMAIN: uzroci i popravci
- ERR_CONNECTION_REFUSED: uzroci i kako ga popraviti
- „Vaša veza nije privatna“: upozorenje o SSL certifikatu