Предел процесса и ulimit -f не совпадают
У меня проблема, когда у процесса максимальный размер файла отличается от ulimit для пользователя. Файл журнала для этого процесса в основном не превышает 524288
прок:
less /proc/20238/limits
Limit Soft Limit Hard Limit Units
...
Max file size 524288 524288 bytes
...
ULIMIT:
ulimit -a
...
file size (blocks, -f) unlimited
...
Из того, что я могу сказать, в скрипте, который запускает процесс, не устанавливается ulimit.
Я также посмотрел на /etc/security/limit.conf
но это только записи для nofile
а также nproc
Q: Есть ли у вас какие-либо идеи, что еще может быть ограничение размера файла?
Если это поможет, вот отредактированная версия того, что запускает процесс:
nohup java $WALLET_OPTS -DOracleName="FileSender" -DAPP=FILE_SDR -Dapp_props=$APP_PROPS -Dfile_name=${FILE_NAME} -XX:+UseParallelGC -XX:+DisableExplicitGC -XX:-EliminateLocks $APPMEM -DDEBUG_MQSERVER=TRUE -classpath $CLASSPATH com.some.path.FileSdrSrv 10 1>> $APP_LOG/filesdr.log 2>&1 &
Файл Java также не устанавливает ulimit
3 ответа
Ulimits наследуются от родительского процесса, если вы входите в систему как root и su для пользователя. Вы получите другие ограничения, чем при входе непосредственно на пользователя.
Та же проблема с начальными сценариями, если это sysvinit. С systemd немного по-другому, но ненамного.
Конфигурация PAM определяет, в каких случаях загружаются ограничения. Вы можете проверить это в человеке.
Вы должны проверить, есть ли какие-либо файлы в /etc/security/limits.d/*.conf
как они могут переопределить значения по умолчанию.
IIRC значения по умолчанию установлены в limit.h, но я не помню его расположение на rhel5.
В системах, использующих systemctl для управления сервисами, такими как centos 7, есть специальное место для установки ограничений для сервисов systemctl. Вы можете положить файл конфигурации в папку /etc/systemd/system/$service_name.service.d/
перезаписать предел. Вы также можете поместить конфигурации в файлы определения сервиса.
Пример:
[Service]
LimitFSIZE=1024
Приведенная выше конфигурация перезапишет "ограничение размера файла" службы.
увидеть
Изменить лимит открытых файлов для службы SysV в CentOS 7
https://fredrikaverpil.github.io/2016/04/27/systemd-and-resource-limits/
https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Приложение может ограничивать ресурсы при запуске, всегда можно установить более строгие ограничения ресурсов, чем настроенное пользователем значение. Смотрите следующий пример:
[centos@be0 ~]$ ulimit -n
32000
[centos@be0 ~]$ ulimit -n 16000
[centos@be0 ~]$ ulimit -n
16000
[centos@be0 ~]$ ulimit -n 32000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
[centos@be0 ~]$