2.4.3.7. Помилка 508 Resource Limit Is Reached

Помилка 508 виникає через перевищення максимально допустимої кількості одночасно працюючих процесів Apache в межах хостинг-акаунту (Entry Process Limit). Опис помилки доступний в офіційній документації CloudLinux за посиланням.

При кожному запиті до динамічного контенту його обробки створюється окремий новий процес і лічильник процесів в хостинг-акаунті збільшується на одиницю. Після завершення роботи процесу лічильник процесів зменшується на одиницю. Максимальна кількість працюючих одночасно процесів у хостинг-акаунті обмежена. Коли процеси створюються швидше, ніж завершуються, черга процесів забивається і досягається ліміт максимальної кількості процесів. Якщо ліміт досягнуто (всі доступні слоти під процеси зайняті), сервер не може створити нові процеси і повертатиме помилку 508 для всіх процесів понад ліміт. Помилка повертатиметься доти, доки черга процесів не розвантажиться і не з’являться вільні слоти для нових процесів.

Оскільки число процесів рахується в цілому по хостинг-акаунту, помилка може спостерігатися на всіх сайтах хостинг-акаунта, навіть якщо причиною досягнення ліміту процесів є лише якийсь один із сайтів.

У разі виникнення помилки 508 слід проаналізувати логи сервера, щоб визначити типи запитів, які запускали ці процеси. Помилка часто супроводжується в Error-логу сайту записами виду «LVE enter: LVE(XXX) HANDLER(XXX) HOSTNAME(XXX) URL(XXX) TID(XXX) errno (7) Read more: https://www.hosting.xyz/wiki/hosting/errors/508/#MHL-E2BIG min_uid (XXX)».

Інформація про кількість процесів в хостинг-акаунті доступна на відповідному графіку.

Поширені причини проблеми:

  • Велика кількість запитів до одного або кількох сайтів хостинг-акаунту. Наприклад, через DDoS-атаки або HTTP-флуд (часту відправку запитів до однієї й тієї ж сторінки).
  • Недостатня оптимізація скриптів сайту, через що вони не встигають своєчасно обробляти всі запити при збільшенні їх кількості.
  • Неоптимальна робота сайту з базою даних. Наприклад, наявність повільних запитів або відсутність індексів.
  • Неправильна логіка роботи сайту, через що він звертається до своїх же ресурсів не напряму, а по HTTP, тим самим породжуючи зайві запити.
  • Якщо скрипти сайту в процесі своєї роботи звертаються до сторонніх ресурсів, причиною може бути відсутність або довга відповідь цих ресурсів. Замість того, щоб швидко завершити свою роботу, скрипту доводиться очікувати відповідь віддаленого сервера, через що процес працює довше звичайного і при великій кількості запитів черга процесів може швидко заповнитися.

Залежно від ситуації, можуть застосовуватися такі способи вирішення проблеми:

  • Визначення джерела великого числа запитів до сайту (шляхом аналізу Access-логу) та його зупинка. Якщо джерело зупинити неможливо, обмеження доступу до сайту для нього.
  • Якщо на сайт спостерігається DDoS-атака, увімкнення захисту від флуду або підключення сервісів фільтрації трафіку (захисту від DDoS).
  • Оптимізація споживання ресурсів, що витрачаються сайтом на формування сторінок. наприклад, переведення на новішу версію PHP, підключення додаткових послуг Memcache(d), Redis, OPcache, оптимізація структури бази даних та запитів до неї, організація кешування засобами самого сайту (встановлення плагінів кешування).
  • Примусове завершення активних процесів. Даний спосіб може не вирішити проблему, так як не усунуто джерело появи множини тривалих процесів.
  • Якщо самостійно визначити причину і вжити заходів можливості немає, слід повідомити про проблему розробнику.

Також можна розглянути варіант переходу на один з тарифів бізнес-хостингу з більшим значенням Entry Process Limit.

Зміст