ISPmanager не работают лимиты



но пользователь может флудить процессами сотнями и тем самым убивать озу до нуля



похоже что политики лимитов ISPmanager не распространяются на новые функции которые они придумали в 6-ой версии

3 комментария

avatar
Если внимательно почитать документацию по этому параметру тут, то можно увидеть:
Процессов пользователя — максимальное количество запускаемых процессов для пользователя. Поле доступно, если установлен веб-сервер Apache. Параметр влияет на дочерние процессы, скрипты CGI и команды SSI, но не на сам веб-сервер.

Делаем проверку, что лимитирование работает на реальном примере.
В директории cgi-bin создаем простой CGI скрипт simple.cgi с правами 755 и со следующим содержимым:
#!/bin/bash
echo "Content-type: text/plain"
echo ""
echo "Проверка лимита процессов..."
echo "Лимит ulimit -u: $(ulimit -u)"
echo "Текущих процессов: $(ps -u $(whoami) --no-headers | wc -l)"
echo ""

COUNT=0
for i in {1..30}; do
    sleep 30 &
    if [ $? -eq 0 ]; then
        COUNT=$((COUNT + 1))
        echo "Запущен процесс $COUNT"
    else
        echo "ОШИБКА: Лимит достигнут на процессе $COUNT"
        exit 0
    fi
done
echo "Всего запущено: $COUNT"

Заходим по адресу pesok.ok/cgi-bin/simple.cgi и видим через какое-то время что-то вроде такого:
Проверка лимита процессов...
Лимит ulimit -u: 20
Текущих процессов: 4

Запущен процесс 1
Запущен процесс 2
Запущен процесс 3
Запущен процесс 4
Запущен процесс 5
Запущен процесс 6
Запущен процесс 7
Запущен процесс 8
Запущен процесс 9
Запущен процесс 10
Запущен процесс 11
Запущен процесс 12
Запущен процесс 13
Запущен процесс 14
Запущен процесс 15
Запущен процесс 16
Запущен процесс 17
Запущен процесс 18
Запущен процесс 19

Видим, что лимит установлен на 20 процессов (ulimit -u: 20)
Уже было 4 процесса запущено.
Скрипт смог запустить еще 15 процессов (4 + 15 = 19)
На 20-м процессе скрипт «обрывается» — это и есть срабатывание ограничения.
Когда достигнут лимит процессов, Apache не может создать новый процесс для продолжения выполнения скрипта, поэтому он просто «умирает» тихо, не выводя последние строки из скрипта.

Одновременно с открытием этого адреса в браузере, можно проконтролировать количество процессов в консоли и увидеть, что их ровно 20 и не становится больше:
# ps -u pesok --no-headers | wc -l
20

Вывод:
Лимиты на количество процессов работают точно как описано в документации. Процессы xray не процессы Apache, следовательно, они не лимитируются.
avatar
спасибо конечно

но тогда нужно ввести какие-то лимиты для Xray
мое дело — сообщить о проблеме, что я и сделал
avatar
Для такого рекомендую использовать возможность лимитирования ресурсов в ispmanager, установленных на операционных системах CloudLinux или МСВСфера www.ispmanager.ru/docs/ispmanager/vozmozhnosti-msvsfera

Оставить комментарий