503 Service Unavailable: preobremenjeno ali v vzdrževanju?
· Branje: 6 min
Kaj napaka pomeni
503 je spletni strežnik, ki pravi „tu sem, vendar vam zdaj ne morem streči“. Za razliko od 502 za njim ni nujno nič pokvarjeno. Strežnik 503 pošlje namenoma v treh primerih: je v načinu vzdrževanja, je dosegel omejitev, ki jo mora spoštovati (povezave, delavci, pasovna širina, omejitev hitrosti zahtev), ali je tako preobremenjen, da zavrača zahteve, da preživi. 503 lahko nosi glavo Retry-After, ki odjemalcem pove, kdaj naj pridejo znova; iskalniki kratek 503 obravnavajo kot začasen in strani ne opustijo.
Pogosti vzroki
- Način vzdrževanja je ostal vklopljen. WordPress med posodobitvami zapiše datoteko
.maintenancein odgovarja s 503, dokler se posodobitev ne konča. Če je posodobitev prekinjena, datoteka ostane in z njo napaka. Laravel, Magento, Drupal in večina ogrodij imajo enakovredno stikalo. - Preobremenitev. Več zahtev, kot jih lahko obdelajo nastavljeni delavci. Dosežen
MaxRequestWorkerspri Apacheju, izčrpanpm.max_childrenpri PHP-FPM ali podatkovna baza, tako počasna, da vsi delavci čakajo. - Omejitev gostovanja. Skupna gostovanja omejujejo sekunde CPU, sočasne procese ali „entry processes“ na račun. Ko je omejitev dosežena, prehod ponudnika gostovanja za vaše spletno mesto odgovarja s 503.
- Zaledni del, vzet iz kroženja. Za uravnalnikom obremenitve ali CDN 503 pomeni, da vsi zaledni deli niso prestali preverjanja delovanja. Cloudflare prikaže svojo stran 503, ko je izvorni strežnik preobremenjen ali mu je omejena hitrost.
- Boti in strgalniki. Iskalni pajek, ki prenaša tisoče strani, ali napad z grobo silo na
wp-login.phpalixmlrpc.phpizčrpa delavce in zakoniti obiskovalci dobijo 503. - Poln disk ali izčrpan pomnilnik. Storitev teče, vendar ne more zapisovati sej, datotek predpomnilnika ali dnevnikov, nekatere aplikacije pa v tem stanju odgovarjajo s 503.
Če ste obiskovalec
Počakajte minuto in znova naložite; 503 je običajno kratek. Če spletno mesto ostane pri 503 več ur, ima lastnik zataknjen način vzdrževanja ali težavo z zmogljivostjo in jo lahko odpravi samo on.
Če je to vaše spletno mesto: najprej preverite
Zaženite preverjanje delovanja spletnega mesta, da potrdite 503 od zunaj in vidite, ali ga je poslal CDN ali vaš lasten strežnik. Nato presodite: ali ste vi ali vaš CMS v zadnjih minutah začeli posodobitev? Če da, gre za način vzdrževanja. Če ne, gre za zmogljivost.
Na vašem lastnem strežniku:
# ali spletni strežnik sploh teče?
systemctl status nginx
systemctl status apache2
# obremenitev, pomnilnik, disk: tri številke za večino 503
uptime
free -m
df -h
# kdo trenutno bombardira spletno mesto?
sudo tail -n 5000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
Povprečna obremenitev daleč nad številom jeder CPU, manj kot 100 MB prostega pomnilnika ali en sam IP s tisoči zahtev v zadnjih minutah vsak zase pojasni 503.
Popravki na vašem lastnem strežniku
1. Končajte zataknjen način vzdrževanja
WordPress: izbrišite datoteko .maintenance v korenu spletnega mesta, nato odprite spletno mesto. Če je bila posodobitev, ki jo je ustvarila, prekinjena, sta vtičnik ali jedro morda napol nameščena; posodobitev ponovno zaženite iz nadzorne plošče ali z WP-CLI:
rm /var/www/example.com/.maintenance
wp core verify-checksums
wp plugin update --all
Laravel: php artisan up. Magento: bin/magento maintenance:disable. Drupal: nastavite $settings['maintenance_mode'] na false ali uporabite drush state:set system.maintenance_mode 0.
2. Ustavite poplavo
Blokirajte kršiteljev IP ali omrežje, nato dodajte omejitev hitrosti, da naslednji tega ne more ponoviti.
# blokirajte en naslov (Debian/Ubuntu z ufw)
sudo ufw deny from 203.0.113.45
# ali z nftables
sudo nft add rule inet filter input ip saddr 203.0.113.45 drop
Omejitev hitrosti nginx za strani za prijavo (v bloku http, nato v bloku strežnika):
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 ali mod_qos naredita enako; fail2ban z jailoma apache-badbots in wordpress ponavljajoče kršitelje blokira samodejno.
3. Strežniku dajte zmogljivost
Če je obremenitev pravi promet, ne zloraba, zvišajte omejitve delavcev v okviru tega, kar dopušča pomnilnik. Apache (mpm_event): MaxRequestWorkers. PHP-FPM: pm.max_children. Najprej preverite pomnilnik na delavca: ps -ylC php-fpm8.3 --sort:rss. Nato preizkusite in znova naložite:
sudo apachectl configtest && sudo systemctl reload apache2
sudo php-fpm8.3 -t && sudo systemctl reload php8.3-fpm
Vklopite predpomnjenje strani (WordPress: vtičnik za predpomnjenje ali predpomnilnik FastCGI v nginxu), da konica ne zažene več PHP pri vsaki zahtevi. Predpomnjena stran stane delček milisekunde; stran WordPressa brez predpomnilnika stane stotine.
4. Sprostite disk
sudo du -xh --max-depth=1 /var | sort -h | tail
sudo journalctl --vacuum-size=200M
sudo apt clean
Stare dnevniške datoteke, varnostne kopije, shranjene na istem disku, in podivjan dnevnik odpravljanja napak so običajni osumljenci.
5. Za uravnalnikom obremenitve
Če vsi zaledni deli hkrati ne prestanejo preverjanja delovanja, to običajno pomeni, da je pokvarjen sam naslov URL za preverjanje (izbrisana stran za preverjanje delovanja, preusmeritev na HTTPS, ki ji preverjevalnik ne sledi), ne pa vsak zaledni del. Naslov URL za preverjanje delovanja prenesite ročno z uravnalnika.
Ko je težava pri vašem ponudniku gostovanja
Pri skupnem gostovanju omejitev ne morete zvišati. Ponudnika vprašajte, katero omejitev ste dosegli in ali gre za vaš promet ali za drug račun na istem strežniku:
Pozdravljeni, moje spletno mesto example.com od približno 09:10 UTC odgovarja s „503 Service Unavailable“. Posodobitev ni bila zagnana in spletno mesto ni v načinu vzdrževanja. Ali mi lahko poveste, ali je moj račun dosegel omejitev virov (CPU, procesi, pomnilnik) ali je strežnik preobremenjen, in kakšne so številke? Če gre za moj račun, katera omejitev in od kdaj?
Če je odgovor redno „vaš račun je dosegel omejitve“, spletno mesto ustrezno predpomnite ali preselite na paket ali strežnik z več zmogljivosti.
Preprečevanje naslednjega
503 se napove: obremenitev se plazi navzgor, pomnilnik zmanjkuje, en IP začne poplavljati. Preverjanja spletnih mest ujamejo 503 v minuti; agent za strežnik pokaže obremenitev, pomnilnik in disk, preden pride tako daleč. Na vašem lastnem strežniku Quick Fix po fiksni ceni sprosti prostor na disku in znova zažene zataknjeno storitev, Deep Fix pa nastavi omejitve hitrosti in predpomnjenje, da strežnik naslednjič ostane na spletu.
Kaj zdaj
Preverite od zunaj
Ali spletno mesto ne deluje za vse ali samo za vas in kaj odgovarja strežnik? Brezplačno, brez registracije.
Preverjanje delovanja spletnega mestaNe deluje? Posežemo mi.
Na vašem lastnem strežniku ali v spletnem prostoru z dostopom SSH: Quick Fix po fiksni ceni za pogoste vzroke, Deep Fix, obračunan v 15-minutnih blokih, za vse ostalo, 24 ur na dan. Ceno vidite pred naročilom.
Naročite popraviloVeč vodičev
- Vaše spletno mesto ne deluje. Kaj storiti v prvih 15 minutah.
- Strežnik ne deluje: kaj preveriti najprej in v katerem vrstnem redu
- 502 Bad Gateway: vzroki in kako ga odpraviti
- 504 Gateway Timeout: kaj pomeni in kako ga odpraviti
- DNS_PROBE_FINISHED_NXDOMAIN: vzroki in rešitve
- ERR_CONNECTION_REFUSED: vzroki in kako ga odpraviti
- „Vaša povezava ni zasebna“: opozorilo o certifikatu SSL