Помилка 503 Служба тимчасово недоступна
Кожному обліковому запису на сервері виділяється певна кількість робочих процесів (воркери Apache mpm-itk), які обробляють запити користувачів. Запити надходять на сервер і ставляться в чергу. Легкі запити обробляються швидко, а важкі проблемні - повільно, сповільнюючи просування черги. Коли довжина черги досягає певного значення, сервер перестає приймати нові запити, повертаючи помилку 503 (Service Temporarily Unavailable, служба тимчасово недоступна). Нижче наведені найпоширеніші причини великої черги, а також способи вирішення цієї проблеми: 1. Велика кількість запитів до веб-сервера: - Завантажений ресурс пошкоджений/містить посилання на занадто багато файлів (картинки, таблиці стилів, JS-скрипти), які завантажуються через окремі запити. Спробуйте об’єднати ресурси в один файл, де це можливо. - На сайті встановлений елемент, який періодично відправляє AJAX запити на сервер (наприклад, чат). Кількість запитів залежить не тільки від кількості відвідувачів, а й від їхньої звички відкривати кілька вкладок у браузері. - Використання елементів ресурсів або скриптів на чужих сайтах (посилання на картинки, скрипти інформерів). - DDoS-атаки. 2. Велика кількість «важких» або пошкоджених компонентів CMS. Перевірте всі компоненти та плагіни вашої CMS, відключаючи їх по черзі, і знайдіть найважчі або пошкоджені, які сповільнюють завантаження сайту. По можливості відмовтеся від таких компонентів, або пошукайте більш швидкий аналог. Також видаліть будь-які непотрібні компоненти, якими ви не користуєтеся або використання яких не є необхідним. 3. Велика кількість повільних запитів до MySQL. Встановіть компоненти кешування в механізм, які можуть зменшити кількість SQL-запитів. Оптимізація запитів SQL. Індексуйте таблиці бази даних за стовпцями, які використовуються у виборі Якщо нічого не допомагає, можливо, варто змінити двигун на більш оптимальний. 4. Передача великих статичних файлів через PHP. Великі статичні файли краще передавати безпосередньо, без використання скриптів. На це є дві причини: по-перше, обмежений час роботи скриптів, після чого передача файлів переривається; по-друге, для передачі файлу через PHP використовується окремий робочий процес, тобто він припиняє участь у механізмі обробки запитів від користувачів. 5. Підключення до віддаленого сервера. Якщо сценарії PHP використовують функції Include, які завантажують частини механізму, розташовані в тому самому обліковому записі, переконайтеся, що вони використовують локальний шлях, а не URL-адресу, наприклад "http://...". Наявність URL-адреси змушує сервер робити додатковий HTTP-запит - це забирає додатковий робочий процес і значно сповільнює завантаження сайту. 6. Список розсилки Запуск скрипта розсилки найкраще розмістити в системі cron, керування яким знаходиться на панелі керування. І запланувати його запуск на час найменшого навантаження на сервер (ніч за київським і московським часом).