CloudLinux използва система за контрол на ресурсите, наречена LVE (Lightweight Virtual Environment). Тя е създадена, за да гарантира, че един потребител не може да “счупи” целия сървър, като изразходи всичките му ресурси.
🔒 Какво може да се ограничи?
| Лимит | Единица | По подразбиране | Какво ограничава |
| SPEED | % от ядро или в Hz | 100% | Скоростта на CPU – относително спрямо едно ядро |
| PMEM | KB | 1024MB | Реална (физическа) RAM памет |
| VMEM | KB | 0 | Виртуална памет – не се препоръчва да се ползва |
| IO | KB/sec | 1024KB/s | Четене + запис към диска |
| IOPS | Операции в секунда | 1024 | Брой I/O операции в секунда |
| NPROC | Брой | 100 | Максимален брой процеси за акаунт |
| EP | Брой | 20 | Входящи процеси (напр. едновременни заявки към Apache/PHP) |
⚠️ Забележка:
Ограниченията за VMEM (виртуална памет) са отживелица и често водят до проблеми – затова се препоръчва да се оставят на 0.
🧾 Примерни настройки за типичен акаунт
✅ Стандартен хостинг акаунт:
SPEED=100%
PMEM=1GB
VMEM=0
IO=1024KB/s
IOPS=1024
NPROC=100
EP=20
🚀 Премиум акаунт:
SPEED=200%
PMEM=2GB
VMEM=0
IO=4096KB/s
IOPS=1024
NPROC=150
EP=40
🛠️ Как работи LVE
Технологията е интегрирана в ядрото на CloudLinux и използва cgroups (контейнери). Работи заедно с Apache чрез модула mod_hostinglimits.
Какво прави:
- Улавя коя заявка към сайта от кой виртуален хост идва.
- Ако е към PHP/CGI скрипт – поставя процеса в LVE на конкретния потребител.
- Огражда му ресурсите.
- След края на заявката – премахва процеса от LVE.
📌 Ако един сайт опита да използва прекалено много ресурси:
- Ще получи грешки 508 (too many entry processes)
- Или грешки 500/503 (ако RAM или процеси са изчерпани)
- Или просто ще се забави, ако е ограничен по CPU/IO
🔍 Проверка дали LVE е активен
Провери дали ядрото е LVE:
uname -r
Трябва да виждаш нещо като:
3.x.x-xxxx.lve.x.x.el7.x86_64
Провери дали модулът е зареден:
lsmod | grep lve
Примерен изход:
lve 46496 0
🧩 Управление на LVE лимити
💻 През контролния панел:
Ако използваш cPanel, Plesk или DirectAdmin, можеш да използваш LVE Manager.
🖥️ От команден ред:
Можеш да използваш:
lvectl
Или редактирай директно:
/etc/container/ve.cfg
Пример:
<lve id=”532″>
<cpu limit=”30″/>
<ncpu limit=”5″/>
</lve>
📈 Наблюдение на натоварването
Можеш да следиш натоварването с:
lvetop
Или:
cat /proc/lve/list
За CPU използвай:
lveps
⚡ SPEED лимит – как работи?
От версия lve-utils 1.4+, лимитът за CPU може да се задава като:
- % от едно ядро – напр. –speed=50% означава половин ядро
- Честота в MHz – напр. –speed=2000mhz
📌 Това позволява унифицирани настройки, независимо какъв хардуер използваш.
🔁 Активиране / деактивиране на LVE и IO лимити
Файл: /etc/sysconfig/lve
LVE_ENABLE=yes
Файл: /etc/sysconfig/iolimits
IO_LIMITS_ENABLED=yes
След промени: рестартирай сървъра.
Ограничения на паметта в CloudLinux OS
В CloudLinux можеш да контролираш колко RAM може да използва всеки хостинг акаунт. Това става чрез два вида лимити:
- PMEM (Physical Memory) – реалната физическа памет, която се ползва
- VMEM (Virtual Memory) – виртуалната памет, която се заявява
🔹 Виртуална памет (VMEM) – не се препоръчва
Виртуалната памет показва колко RAM приложенията биха искали да използват. Тя се вижда в колоната VIRT в командата top.
📌 Важна бележка:
Ограниченията за виртуална памет (VMEM) са отживелица в CloudLinux 6 и 7 и могат да създадат странни грешки. Затова се препоръчва напълно да ги изключиш като зададеш VMEM=0.
Когато VMEM лимитът се достигне:
- CloudLinux блокира нови заявки за памет.
- Скриптовете (напр. PHP/CGI) започват да връщат грешки 500 или 503.
🔸 Физическа памет (PMEM) – препоръчван вариант
Физическата памет (PMEM) показва реалната RAM, която се ползва в момента. Вижда се в колоната RES в top.
Тази стойност включва:
- реално използваната памет,
- споделена памет между процесите (напр. PHP),
- дисков кеш (който може да не се брои, виж по-долу).
📌 Обикновено реално използваната физическа памет е по-малко от виртуалната.
Ако един акаунт премине лимита на физическа памет:
- Първо се изчиства дисковия кеш (без да спира процесите).
- Ако това не помогне – CloudLinux убива някои процеси и връща грешки 500/503.
🚫 Спиране на броенето на дисковия кеш (Page Cache)
След версия kmod-lve 2.0-53 (CL8) и 2.1-17 (CL9) можеш да изключиш броенето на дисковия кеш от общата използвана памет с тази команда:
sysctl -w kernel.memstat_nocache=1
📌 Това помага на клиентите, защото след края на някой PHP скрипт, кешът може да остане в паметта и да изглежда, че акаунтът още ползва RAM.
⚠️ По новите инсталации тази опция вече е активна по подразбиране.
🧪 Проверка: защо се отчита RAM, но няма активни процеси?
Понякога lveinfo или панелът може да показва, че даден акаунт използва RAM, но няма активни процеси. Това обикновено е заради дисков кеш.
👉 Как да провериш:
CloudLinux OS 6:
cat /proc/bc/XXX/meminfo
CloudLinux OS 7 / 6 Hybrid:
cat /proc/bc/lveXXX/meminfo
CloudLinux OS 8 / 7 Hybrid:
cat /sys/fs/cgroup/memory/lveXXX/memory.stat
Търси ред с:
Cached: 67300 kB (или: cache 1662976)
Заместване: XXX е User ID на акаунта. Можеш да го намериш с:
id потребителско_име
🛑 Важно за kernel memory accounting
По подразбиране, kernel memory accounting е изключено в CloudLinux OS 7/8/9, защото:
- Създава забавяния при натоварени сървъри
- В някои случаи може дори да срине ядрото
В CL8/CL9 се използва параметър:
cgroup.memory=nokmem
Може да го промениш, но е по-добре да създадеш собствен tuned профил за да не бъде презаписан след ъпдейт.
IO, IOPS, EP, NPROC и други лимити в CloudLinux OS
CloudLinux OS дава възможност да ограничим ресурсите, които всеки хостинг акаунт може да използва. Това осигурява стабилна работа на сървъра дори при натоварени сайтове или злонамерени атаки.
⚙️ IO лимит (Input/Output)
- Какво е: Контролира скоростта на достъп до диска – колко бързо един сайт може да чете/пише на диска.
- Единици: KB/s (килобайта в секунда)
- Какво става при достигане на лимита: Процесите не се спират, а се забавят (временно „заспиват“), за да не надвишат ограничението.
- ВАЖНО: Това засяга само дисковия достъп, не мрежовия трафик.
🔁 IOPS (Input/Output Operations Per Second)
- Какво е: Лимит на броя четения/записи в секунда (независимо от размера).
- Какво става при достигане: Нови операции чакат до следващата секунда.
- Пример: Ако лимитът е 1024 IOPS, а сайтът направи 1025 заявки – последната ще се забави.
🌐 EP (Entry Processes) – „Входни процеси“
- Какво е: Лимит на едновременните заявки към сайта (най-често PHP/CGI скриптове).
- Ползва се за: Защита от DoS атаки (Flood чрез бавни страници).
- Какво става при достигане: Сайтът започва да връща грешка 508 – Resource Limit Reached.
- Специално: С LiteSpeed се държи различно от Apache – защото LiteSpeed използва по-малко процеси, което влияе на отчитането.
👥 NPROC – Лимит на процесите
- Какво е: Определя максималния брой процеси (и нишки), които един акаунт може да стартира.
- Какво става при достигане: Нови процеси не могат да се стартират, а сайтовете връщат 500/503 грешки.
🧠 Важно: Добра практика е NPROC да бъде най-малко с 15 по-голям от EP, за да има място за уеб процеси, SSH сесии и други системни нишки.
📦 Inodes – Брой файлове и папки
- Какво е: Inode = единичен файл или папка.
- Лимитът на inodes определя колко файла/папки може да има един акаунт.
- Къде се прилага: Само върху /home дяла.
- Как работи:
- Soft limit: може да бъде превишен за определено време (по подразбиране 7 дни).
- Hard limit: не позволява повече файлове изобщо.
📌 Можеш да управляваш inode лимитите през LVE Manager (в cPanel, Plesk и DirectAdmin) или чрез edquota.
🌐 Ограничения на мрежов трафик
- Какво е: Може да ограничиш скоростта на изходящия трафик за всеки акаунт.
- Как става: CloudLinux маркира трафика с LVE ID, а с tc команда се налага скоростен лимит.
- Важно: Работи само с IPv4 и не измерва обем, а само скорост (например 256kbps).
- Не засяга: Статично съдържание (HTML, изображения), само PHP/CGI, SSH и подобни.
🛠️ Проверка и валидиране на лимитите
От lve-utils 3.1-1 насам CloudLinux автоматично проверява дали зададените лимити са логични:
- Пример: Ако EP = 20, тогава NPROC трябва да е поне 35 (EP + 15).
- Ако лимитите не са съвместими – ще се покаже предупреждение при задаване или чрез cldiag –check-lve-limits.
✅ Добра практика за лимитите
| Лимит | Стойност |
| SPEED | 100% – 200% (зависи от плана) |
| PMEM | 512MB – 2GB |
| VMEM | 0 (да се изключи) |
| IO | 1024KB/s – 4096KB/s |
| IOPS | 1024 |
| NPROC | EP + 15 или повече |
| EP | 20 – 40 |
| Inodes | Според нуждите на акаунта |
Съвместимост с уеб сървъри и PHP
| Уеб сървър / PHP режим | CPU | RAM | EP | NPROC | IO | CageFS | PHP Selector |
| Apache / suPHP | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Apache / FCGID | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Apache / CGI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Apache / PHP-FPM | ✅* | ✅ | ✅ | ✅ | ✅ | ✅* | ❌ |
| Apache / mod_php (DSO) | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Apache / mod_ruid2 | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Apache / MPM ITK | ✅ | ❌ | ✅ | ✅ | ✅ | ✅* | ❌ |
| LiteSpeed | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| NGINX / PHP-FPM | ✅* | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ |
| SSH | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Cron jobs | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Apache / mod_lsapi | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Бележки:
- * – Има частична или ограничена съвместимост (например с PHP-FPM и CageFS).
- mod_lsapi не работи, когато е активиран PHP-FPM, защото и двата са “PHP обработчици”.
👨💼 Reseller лимити – какво представляват?
Reseller лимитите позволяват на хостинг доставчиците да ограничат общото използване на ресурси от всеки реселър и неговите потребители.
📌 Как работят:
- Можеш да зададеш лимит за реселъра (например 2 CPU ядра, 2GB RAM и т.н.).
- Реселърът може да зададе по-високи лимити на своите клиенти, но общата им консумация няма да надвишава неговите лимити.
- Реселърът няма достъп до ограничаване на inodes и MySQL.
🧠 Какво да знаем за Reseller лимитите?
- Реселърът като потребител (същото потребителско име) е просто обикновен акаунт.
- Самият реселър като роля не може да надвишава лимитите, които му е задал администраторът.
- Лимитите се активират, когато всички потребители под даден реселър използват ресурси над зададения му лимит.
✅ Изисквания за активиране на Reseller лимити
- CloudLinux OS 7/8 или Hybrid
- Ядро: Поддържа се от 3.10.0-714.10.2.lve1.5.3.el7 и нагоре
- lvemanager версия 3.0-18 или по-нова
⚙️ Как да активираш Reseller лимити в cPanel?
- Увери се, че използваш правилната версия на CloudLinux и ядро.
- При създаване на акаунт:
- ✅ Избери „Make this account a reseller“
- ✅ Избери „Make the account own itself“ – това е ЗАДЪЛЖИТЕЛНО!
- Влез в WHM → Modify Account, ако е нужно промени собствеността.
- Отиди в LVE Manager → Users → (реселър) → кликни на ✏️.
- Активирай опцията Manage Limits, съгласи се и задай лимитите.
⚠️ Бележки
- Не се поддържа в CloudLinux Solo/Admin изданията.
- В DirectAdmin, ако местиш потребител от един реселър към друг – ръчно прехвърли пакета му.
- DirectAdmin създава „DEFAULT виртуален пакет“ с лимитите по подразбиране.
- За да запазиш inodes лимити, добави:
cl_quota_inodes_inheritance=1 в /etc/sysconfig/cloudlinux.
- За да запазиш inodes лимити, добави:
🔓 Как да изключим лимитите за реселъри (Reseller Limits)
- Отиди в LVE Manager → таб „Users“.
- Намери съответния реселър и кликни върху иконата с моливчето (редакция).
- В изскачащия прозорец премести слайдера „Manage Limits“ в позиция изключено (off).
- Ще се появи съобщение: „Are you sure you want to disable limits?“ – натисни AGREE.
- След това натисни Save.
📌 Важно:
Деактивирането на лимитите не променя лимитите, зададени от реселъра за неговите клиенти – те се запазват.
Изтриват се само основните (дефолтните) лимити, които са били зададени директно на самия реселър.
📚 Допълнителни ресурси и помощ
Ако имаш още въпроси относно лимитите за реселъри, разгледай тези източници:
- 🔍 FAQ разделът в нашата официална база знания
- 🧭 Обяснение на интерфейса за Reseller Limits (UI)
- 💬 Можеш също да пишеш директно до CloudLinux Support
🧪 Контрол над лимитите при процеси от Уеб Интерфейса (Node.js, Python и Ruby)
CloudLinux позволява да управляваш как точно се прилагат лимитите (CPU, RAM, IO и т.н.) за уеб приложения, стартирани от:
- Node.js Selector
- Ruby Selector
- Python Selector
Това се настройва чрез променлива в конфигурационен файл:
web_resource_limit_mode
Примерен запис във файл:
[custom_section]
web_resource_limit_mode = heavy
⚙️ Възможни стойности:
| Стойност | Какво означава |
| all (по подразбиране) | Всички процеси се стартират в CageFS и с активирани LVE лимити. |
| heavy | Леките процеси работят без лимити, но са все пак изолирани (в CageFS). Подходящо за избягване на грешки при NUMPROC лимити. |
| unlimited | Няма лимити – процесите работят напълно свободно. ⚠️ Не се препоръчва за продукционна среда! |
📌 Изисквания, за да използваш тази функция:
- Трябва да имаш инсталиран CloudLinux OS.
- Пакетите по-долу трябва да са в следните версии (или по-нови):
| Пакет | Версия |
| lve-wrappers | ≥ 0.7.2 |
| lvemanager | ≥ 7.5.9 |
| kmod-lve | ≥ 2.0.36 |
| lve | ≥ 2.1.2 |