503 Service Unavailable: υπερφόρτωση ή συντήρηση;
· 2 λεπτά ανάγνωσης
Τι σημαίνει το σφάλμα
Το 503 είναι ο web server που λέει «είμαι εδώ, αλλά δεν μπορώ να σε εξυπηρετήσω αυτή τη στιγμή». Σε αντίθεση με ένα 502, τίποτα πίσω του δεν είναι απαραίτητα χαλασμένο. Ο server στέλνει σκόπιμα 503 σε τρεις περιπτώσεις: βρίσκεται σε λειτουργία συντήρησης, έχει φτάσει ένα όριο που του ζητήθηκε να σεβαστεί (συνδέσεις, workers, εύρος ζώνης, ένα rate limit) ή είναι τόσο υπερφορτωμένος που απορρίπτει αιτήματα για να μείνει ζωντανός. Ένα 503 μπορεί να φέρει μια κεφαλίδα Retry-After που λέει στους πελάτες πότε να ξαναδοκιμάσουν· οι μηχανές αναζήτησης αντιμετωπίζουν ένα σύντομο 503 ως προσωρινό και δεν αφαιρούν τη σελίδα.
Συνηθισμένες αιτίες
- Η λειτουργία συντήρησης έμεινε ενεργή. Το WordPress γράφει ένα αρχείο
.maintenanceκατά τις ενημερώσεις και απαντά 503 μέχρι να τελειώσει η ενημέρωση. Αν η ενημέρωση διακοπεί, το αρχείο μένει και μαζί του το σφάλμα. Τα Laravel, Magento, Drupal και τα περισσότερα frameworks έχουν αντίστοιχο διακόπτη. - Υπερφόρτωση. Περισσότερα αιτήματα από όσα μπορούν να χειριστούν οι ρυθμισμένοι workers. Έχει φτάσει το
MaxRequestWorkersτου Apache, έχει εξαντληθεί τοpm.max_childrenτου PHP-FPM, ή η βάση δεδομένων είναι τόσο αργή που κάθε worker περιμένει. - Όριο φιλοξενίας. Οι πάροχοι shared hosting θέτουν όρια σε δευτερόλεπτα CPU, ταυτόχρονες διεργασίες ή «entry processes» ανά λογαριασμό. Όταν φτάσεις το όριο, η πύλη του παρόχου απαντά 503 μόνο για τη δική σου ιστοσελίδα.
- Ένα backend αποσύρθηκε από την εναλλαγή. Πίσω από έναν load balancer ή CDN, ένα 503 σημαίνει ότι όλα τα backends απέτυχαν στον έλεγχο υγείας τους. Το Cloudflare δείχνει τη δική του σελίδα 503 όταν ο origin είναι υπερφορτωμένος ή περιορισμένος με rate limit.
- Bots και scrapers. Ένας crawler που φέρνει χιλιάδες σελίδες, ή μια επίθεση brute-force στο
wp-login.phpή στοxmlrpc.php, εξαντλεί τους workers και οι νόμιμοι επισκέπτες παίρνουν 503. - Γεμάτος δίσκος ή εξαντλημένη μνήμη. Η υπηρεσία λειτουργεί αλλά δεν μπορεί να γράψει συνεδρίες, αρχεία cache ή logs, και ορισμένες εφαρμογές απαντούν 503 σε αυτή την κατάσταση.
Αν είσαι επισκέπτης
Περίμενε ένα λεπτό και φόρτωσε ξανά· ένα 503 είναι συνήθως σύντομο. Αν μια ιστοσελίδα μένει σε 503 για ώρες, ο ιδιοκτήτης έχει κολλημένη λειτουργία συντήρησης ή πρόβλημα χωρητικότητας, και μόνο εκείνος μπορεί να το διορθώσει.
Αν είναι η δική σου ιστοσελίδα: έλεγξε πρώτα
Τρέξε τον έλεγχο διαθεσιμότητας ιστοσελίδας για να επιβεβαιώσεις το 503 απέξω και να δεις αν το έστειλε ένα CDN ή ο δικός σου server. Μετά αποφάσισε: ξεκίνησες εσύ ή το CMS σου μια ενημέρωση τα τελευταία λεπτά; Αν ναι, είναι λειτουργία συντήρησης. Αν όχι, είναι χωρητικότητα.
Στον δικό σου server:
# λειτουργεί καθόλου ο web server;
systemctl status nginx
systemctl status apache2
# φορτίο, μνήμη, δίσκος: οι τρεις αριθμοί πίσω από τα περισσότερα 503
uptime
free -m
df -h
# ποιος βομβαρδίζει την ιστοσελίδα αυτή τη στιγμή;
sudo tail -n 5000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
Ένα load average πολύ πάνω από τον αριθμό των πυρήνων CPU, λιγότερα από 100 MB ελεύθερης μνήμης, ή μία μόνο IP με χιλιάδες αιτήματα τα τελευταία λεπτά, το καθένα εξηγεί ένα 503.
Διορθώσεις στον δικό σου server
1. Τέλειωσε μια κολλημένη λειτουργία συντήρησης
WordPress: διέγραψε το αρχείο .maintenance στη ρίζα της ιστοσελίδας και μετά άνοιξε την ιστοσελίδα. Αν η ενημέρωση που το δημιούργησε διακόπηκε, το plugin ή ο πυρήνας μπορεί να είναι μισοεγκατεστημένο· εκτέλεσε ξανά την ενημέρωση από τον πίνακα ελέγχου ή με το 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: όρισε το $settings['maintenance_mode'] σε false ή χρησιμοποίησε drush state:set system.maintenance_mode 0.
2. Σταμάτησε την πλημμύρα
Μπλόκαρε την IP ή το δίκτυο που φταίει και μετά πρόσθεσε ένα rate limit ώστε το επόμενο να μην μπορεί να το ξανακάνει.
# μπλόκαρε μία διεύθυνση (Debian/Ubuntu με ufw)
sudo ufw deny from 203.0.113.45
# ή με nftables
sudo nft add rule inet filter input ip saddr 203.0.113.45 drop
Rate limit του nginx για σελίδες σύνδεσης (στο μπλοκ http και μετά στο μπλοκ server):
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 ή mod_qos κάνουν το ίδιο· το fail2ban με τα jails apache-badbots και wordpress μπλοκάρει αυτόματα τους επαναλαμβανόμενους παραβάτες.
3. Δώσε χωρητικότητα στον server
Αν το φορτίο είναι πραγματική επισκεψιμότητα, όχι κατάχρηση, ανέβασε τα όρια των workers στο μέτρο που επιτρέπει η μνήμη. Apache (mpm_event): MaxRequestWorkers. PHP-FPM: pm.max_children. Έλεγξε πρώτα τη μνήμη ανά worker: ps -ylC php-fpm8.3 --sort:rss. Μετά δοκίμασε και κάνε reload:
sudo apachectl configtest && sudo systemctl reload apache2
sudo php-fpm8.3 -t && sudo systemctl reload php8.3-fpm
Ενεργοποίησε caching σελίδων (WordPress: ένα plugin caching ή FastCGI cache στο nginx) ώστε μια κορύφωση να μην τρέχει πια PHP για κάθε αίτημα. Μια σελίδα από cache κοστίζει ένα κλάσμα του χιλιοστού του δευτερολέπτου· μια σελίδα WordPress χωρίς cache κοστίζει εκατοντάδες.
4. Ελευθέρωσε τον δίσκο
sudo du -xh --max-depth=1 /var | sort -h | tail
sudo journalctl --vacuum-size=200M
sudo apt clean
Παλιά αρχεία καταγραφής, αντίγραφα ασφαλείας που κρατιούνται στον ίδιο δίσκο και ένα ανεξέλεγκτο debug log είναι οι συνήθεις ύποπτοι.
5. Πίσω από load balancer
Αν όλα τα backends αποτυγχάνουν στον έλεγχο υγείας ταυτόχρονα, συνήθως φταίει το ίδιο το URL του ελέγχου (διαγραμμένη σελίδα υγείας, ανακατεύθυνση σε HTTPS που ο έλεγχος δεν ακολουθεί) και όχι κάθε backend. Φέρε το URL υγείας με το χέρι από τον balancer.
Όταν φταίει ο πάροχός σου
Σε shared hosting δεν μπορείς να ανεβάσεις όρια. Ρώτα τον πάροχό σου ποιο όριο έφτασες και αν φταίει η δική σου επισκεψιμότητα ή ένας άλλος λογαριασμός στον ίδιο server:
Γεια σας, η ιστοσελίδα μου example.com απαντά «503 Service Unavailable» από περίπου τις 09:10 UTC. Δεν έχω ξεκινήσει ενημέρωση και η ιστοσελίδα δεν είναι σε λειτουργία συντήρησης. Μπορείτε να μου πείτε αν ο λογαριασμός μου έφτασε όριο πόρων (CPU, διεργασίες, μνήμη) ή αν ο server είναι υπερφορτωμένος, και ποιοι είναι οι αριθμοί; Αν είναι ο λογαριασμός μου, ποιο όριο και από πότε;
Αν η απάντηση είναι τακτικά «ο λογαριασμός σας έφτασε τα όριά του», είτε βάλε σωστό caching στην ιστοσελίδα είτε πέρασε σε πρόγραμμα ή server με περισσότερη χωρητικότητα.
Πώς να αποτρέψεις το επόμενο
Ένα 503 προαναγγέλλεται: το φορτίο ανεβαίνει σιγά σιγά, η μνήμη τελειώνει, μία IP αρχίζει να βομβαρδίζει. Οι έλεγχοι ιστοσελίδας πιάνουν το 503 μέσα σε ένα λεπτό· ο agent server δείχνει φορτίο, μνήμη και δίσκο πριν φτάσει τόσο μακριά. Στον δικό σου server, ένα Quick Fix ελευθερώνει χώρο στον δίσκο και επανεκκινεί μια κολλημένη υπηρεσία σε σταθερή τιμή, και ένα Deep Fix ρυθμίζει rate limits και caching ώστε ο server να μείνει όρθιος την επόμενη φορά.
Τι κάνεις τώρα
Έλεγξέ το απ’ έξω
Έχει πέσει η ιστοσελίδα για όλους ή μόνο για σένα, και τι απαντά ο server; Δωρεάν, χωρίς εγγραφή.
Έλεγχος διαθεσιμότητας ιστοσελίδαςΈπεσε; Αναλαμβάνουμε.
Στον δικό σου server ή σε webspace με πρόσβαση SSH: ένα Quick Fix σε σταθερή τιμή για τις συνηθισμένες αιτίες, ένα Deep Fix με χρέωση σε τμήματα των 15 λεπτών για τις υπόλοιπες, όλο το εικοσιτετράωρο. Τιμή πριν παραγγείλεις.
Ζήτησε επισκευήΠερισσότεροι οδηγοί
- Η ιστοσελίδα σου έχει πέσει. Τι να κάνεις στα πρώτα 15 λεπτά.
- Έπεσε ο server: τι να ελέγξεις πρώτα και με ποια σειρά
- 502 Bad Gateway: αιτίες και πώς να το διορθώσεις
- 504 Gateway Timeout: τι σημαίνει και πώς να το διορθώσεις
- DNS_PROBE_FINISHED_NXDOMAIN: αιτίες και λύσεις
- ERR_CONNECTION_REFUSED: αιτίες και πώς να το διορθώσεις
- «Η σύνδεσή σας δεν είναι ιδιωτική»: η προειδοποίηση για το πιστοποιητικό SSL