CentOS7: su /bin/bash: Ресурс временно недоступен

Вопрос или проблема

Каждый раз, когда я пытаюсь переключиться на testuser, я получаю сообщение о временной недоступности ресурса. Параметры nproc и nofile установлены на 65k. testuser запускает несколько программ на Java. Не превышал значения nproc и nofile (подтверждено с помощью команд ps и lsof) для testuser.

Содержимое /etc/security/limits.conf


* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535
testuser   soft  nofile  65535
testuser   hard  nofile  65535

Это система CentOS 7, работающая на мощном сервере Dell 64bit.

Что еще может быть проблемой?

Это сработало для меня на CentOS7.

Ниже приведен мой /etc/security/limits.d/20-nproc.conf файл.

    *          soft    nproc     4096
    root       soft    nproc     unlimited
    jenkins     soft    nproc     65535

У меня была проблема с пользователем Jenkins – не позволяло переключиться на Jenkins. Эта ссылка RedHat помогла мне, хотя решение предназначено для RHEL4/5/6, но оно сработало для CentOS7.

Ответ или решение

Проблема, с которой вы столкнулись в CentOS 7, при попытке переключиться на пользователя testuser и получении сообщения "Resource temporarily unavailable", может быть связана с несколькими факторами, несмотря на то, что ограничения на количество процессов (nproc) и открытых файлов (nofile) настроены на 65 535. Давайте подробно рассмотрим возможные причины и решения.

1. Ограничения на количество процессов

Ваша конфигурация файла /etc/security/limits.conf выглядит правильно. Однако важно убедиться, что настройки, находящиеся в /etc/security/limits.d/, не конфликтуют с вашими основными настройками. Например, если в файле /etc/security/limits.d/20-nproc.conf установлены более низкие лимиты процедур для * или для testuser, это может привести к упомянутой проблеме. Проверьте этот файл и убедитесь, что для testuser задано значение, позволяющее ему создавать процессы.

cat /etc/security/limits.d/20-nproc.conf

Если вы видите записи, ограничивающие данного пользователя, вам нужно добавить или изменить настройки.

2. Глобальные системные настройки

Параметры системы также могут накладывать ограничения на количество процессов или потоков, которые могут быть созданы. Проверьте настройки в файле /etc/sysctl.conf и выполните команду sysctl -a, чтобы убедиться, что нет глобальных ограничений, установленных для использования процессов.

Например, проверьте следующие параметры:

sysctl kernel.pid_max

Убедитесь, что значение достаточно высоко, чтобы поддерживать требуемое количество процессов.

3. Проверка текущих процессов и ресурсов

Хотя вы уже провели анализ с помощью ps и lsof, рекомендую более глубоко проанализировать активные процессы и активные соединения с помощью:

ps -u testuser
lsof -u testuser

Убедитесь, что у пользователя testuser нет "застревших" процессов, которые могли бы исчерпать лимиты, даже если они не отображаются непосредственно.

4. Настройки системы и конфигурации

Также стоит проверить, есть ли в системной конфигурации другие ограничения, такие как настройки SELinux. Если SELinux включён, он может блокировать создание новых процессов в зависимости от политик, установленных в системе. Проверьте статус SELinux с помощью:

sestatus

Если SELinux активно, попробуйте временно отключить его для проверки:

setenforce 0

Если после этого переключение на пользователя testuser проходит успешно, необходимо будет донастроить правила SELinux.

5. Операционная система и приложения

Иногда приложения могут напрямую ограничивать ресурсы. В вашем случае, если запускаемые Java-программы создают значительное количество потоков, стоит проверить их параметры запуска. Убедитесь, что они настроены для оптимального использования ресурсов и могут корректно работать при текущих лимитах.

Итоги

Резюмируя, проблема "Resource temporarily unavailable" может возникать по нескольким причинам. Внимательное рассмотрение конфигурации лимитов в /etc/security/limits.conf и /etc/security/limits.d/, а также системных настроек и состояния процессов, может помочь вам найти и устранить источник проблемы. Если возможно, используйте и отладочные инструменты, которые помогут проанализировать поведение системы при выполнении задач.

Если вы уже попробовали все вышеперечисленные шаги, порекомендуйте проверить наличие обновлений для системы, чтобы устранить возможные ошибки или конфликтные ситуации в самой ОС.

Оцените материал
Добавить комментарий

Капча загружается...