503 Service Unavailable: overbelastet eller i vedlikehold?
· 6 min å lese
Hva feilen betyr
503 er webserveren som sier «jeg er her, men kan ikke betjene deg akkurat nå». I motsetning til en 502 er ikke nødvendigvis noe bak den ødelagt. Serveren sender en 503 med vilje i tre situasjoner: den er i vedlikeholdsmodus, den har truffet en grense den er bedt om å respektere (tilkoblinger, arbeidere, båndbredde, en rate limit), eller den er så overbelastet at den kaster forespørsler for å holde seg i live. En 503 kan ha en Retry-After-header som forteller klientene når de skal komme tilbake; søkemotorer behandler en kort 503 som midlertidig og fjerner ikke siden.
Vanlige årsaker
- Vedlikeholdsmodus som ble stående på. WordPress skriver en
.maintenance-fil under oppdateringer og svarer 503 til oppdateringen er ferdig. Blir oppdateringen avbrutt, blir filen stående, og det blir feilen også. Laravel, Magento, Drupal og de fleste rammeverk har en tilsvarende bryter. - Overbelastning. Flere forespørsler enn de konfigurerte arbeiderne rekker. Apaches
MaxRequestWorkersnådd, PHP-FPMspm.max_childrenoppbrukt, eller databasen så treg at hver arbeider venter. - En hostinggrense. Delte hosting-leverandører begrenser CPU-sekunder, samtidige prosesser eller «entry processes» per konto. Når du treffer taket, svarer hosting-leverandørens gateway 503 for nettsiden din alene.
- En backend tatt ut av rotasjon. Bak en lastbalanserer eller et CDN betyr en 503 at alle backends feilet helsesjekken. Cloudflare viser sin egen 503-side når opprinnelsesserveren er overbelastet eller rate-begrenset.
- Roboter og skrapere. En crawler som henter tusenvis av sider, eller et brute force-angrep mot
wp-login.phpellerxmlrpc.php, tømmer arbeiderne, og legitime besøkende får 503. - En full disk eller oppbrukt minne. Tjenesten er oppe, men kan ikke skrive økter, cachefiler eller logger, og noen applikasjoner svarer 503 i den tilstanden.
Hvis du er besøkende
Vent et minutt og last på nytt; en 503 er vanligvis kort. Blir en nettside stående på 503 i timevis, har eieren en fastlåst vedlikeholdsmodus eller et kapasitetsproblem, og bare eieren kan fikse det.
Hvis det er din nettside: sjekk først
Kjør nettside-nede-sjekken for å bekrefte 503 utenfra og se om et CDN eller din egen server sendte den. Avgjør så: har du eller CMS-et ditt startet en oppdatering de siste minuttene? Hvis ja, er det vedlikeholdsmodus. Hvis ikke, er det kapasitet.
På din egen server:
# er webserveren oppe i det hele tatt?
systemctl status nginx
systemctl status apache2
# belastning, minne, disk: de tre tallene bak de fleste 503-feil
uptime
free -m
df -h
# hvem hamrer på nettsiden akkurat nå?
sudo tail -n 5000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
En load average langt over antall CPU-kjerner, mindre enn 100 MB ledig minne, eller én enkelt IP med tusenvis av forespørsler de siste minuttene forklarer hver sin 503.
Løsninger på din egen server
1. Avslutt en fastlåst vedlikeholdsmodus
WordPress: slett .maintenance-filen i rotmappen til nettsiden, og åpne deretter nettsiden. Ble oppdateringen som opprettet den avbrutt, kan pluginen eller kjernen være halvt installert; kjør oppdateringen på nytt fra dashbordet eller med 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: sett $settings['maintenance_mode'] til false eller bruk drush state:set system.maintenance_mode 0.
2. Stopp flommen
Blokker den skyldige IP-en eller det skyldige nettverket, og legg deretter til en rate limit slik at den neste ikke kan gjøre det igjen.
# blokker én adresse (Debian/Ubuntu med ufw)
sudo ufw deny from 203.0.113.45
# eller med nftables
sudo nft add rule inet filter input ip saddr 203.0.113.45 drop
nginx rate limit for innloggingssider (i http-blokken, deretter i server-blokken):
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 eller mod_qos gjør det samme; fail2ban med jailene apache-badbots og wordpress blokkerer gjengangere automatisk.
3. Gi serveren kapasitet
Er belastningen ekte trafikk, ikke misbruk, øk arbeidergrensene innenfor det minnet tillater. Apache (mpm_event): MaxRequestWorkers. PHP-FPM: pm.max_children. Sjekk minne per arbeider først: ps -ylC php-fpm8.3 --sort:rss. Test og last deretter på nytt:
sudo apachectl configtest && sudo systemctl reload apache2
sudo php-fpm8.3 -t && sudo systemctl reload php8.3-fpm
Slå på sidecaching (WordPress: en cache-plugin eller FastCGI cache i nginx) slik at en topp ikke lenger kjører PHP for hver forespørsel. En cachet side koster brøkdelen av et millisekund; en WordPress-side uten cache koster hundrevis.
4. Frigjør disken
sudo du -xh --max-depth=1 /var | sort -h | tail
sudo journalctl --vacuum-size=200M
sudo apt clean
Gamle loggfiler, sikkerhetskopier som ligger på samme disk og en løpsk feilsøkingslogg er de vanlige mistenkte.
5. Bak en lastbalanserer
At alle backends feiler helsesjekken samtidig, betyr vanligvis at selve sjekk-URL-en er ødelagt (slettet helsesiden, omdirigering til HTTPS som sjekkeren ikke følger) i stedet for at hver backend er det. Hent helse-URL-en for hånd fra balansereren.
Når det er hosting-leverandørens problem
På delt hosting kan du ikke øke grenser. Spør hosting-leverandøren din hvilken grense du traff, og om det er trafikken din eller en annen konto på samme server:
Hei, nettsiden min example.com svarer «503 Service Unavailable» siden omtrent 09:10 UTC. Jeg har ikke startet noen oppdatering, og nettsiden er ikke i vedlikeholdsmodus. Kan dere si meg om kontoen min traff en ressursgrense (CPU, prosesser, minne) eller om serveren er overbelastet, og hva tallene er? Hvis det er kontoen min, hvilken grense og siden når?
Er svaret jevnlig «kontoen din traff grensene sine», må du enten cache nettsiden ordentlig eller flytte til en plan eller server med mer kapasitet.
Forhindre neste gang
En 503 varsler seg selv: belastningen kryper opp, minnet går tomt, én IP begynner å oversvømme. Nettsidesjekker fanger 503 innen et minutt; serveragenten viser belastning, minne og disk før det kommer så langt. På din egen server frigjør en Quick Fix diskplass og starter en fastlåst tjeneste på nytt til fast pris, og en Deep Fix setter opp rate limits og caching slik at serveren holder seg oppe neste gang.
Hva nå
Sjekk det utenfra
Er nettsiden nede for alle eller bare for deg, og hva svarer serveren? Gratis, uten registrering.
Nettside-nede-sjekkNede? Vi tar over.
På din egen server eller i et webhotell med SSH-tilgang: en Quick Fix til fast pris for de vanlige årsakene, en Deep Fix som faktureres i blokker på 15 minutter for resten, døgnet rundt. Pris før du bestiller.
Få det fiksetFlere guider
- Nettsiden din er nede. Dette gjør du de første 15 minuttene.
- Server nede: hva du sjekker først, og i hvilken rekkefølge
- 502 Bad Gateway: årsaker og hvordan du fikser det
- 504 Gateway Timeout: hva det betyr og hvordan du fikser det
- DNS_PROBE_FINISHED_NXDOMAIN: årsaker og løsninger
- ERR_CONNECTION_REFUSED: årsaker og hvordan du fikser det
- «Tilkoblingen din er ikke privat»: advarselen om SSL-sertifikatet