Назад | Перейти на главную страницу

ulimit не отображается для раба Дженкинса

Проблема

Получил java.io.IOException: Too many open files в индексировании solr через jenkins.

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

Итак, установите ulimit в окне Linux со спецификацией

Linux x86_64 GNU/Linux

в обоих из следующих способов

  1. ulimit -n 1000000

  2. /etc/security/limits.conf

    userx soft nofile 1000000
    userx hard nofile 1000000
    

Дано

  1. userx - это пользователь, через которого выполняется задание jenkins.
  2. при выполнении ssh в поле как userx вручную через терминал и проверьте ulimit -n я получаю 10000000

Вопрос

Но при выполнении того же ulimit -n через задание jenkins получается только 1024, что является значением по умолчанию.

Любой совет был бы очень полезным?

Убедитесь, что pam_limits.so включен для su, если ваш сценарий запуска jenkins использует «su» для переключения пользователей.

Для Ubuntu Server раскомментируйте строку "session required pam_limits.so" в файле /etc/pam.d/su

sudo sed -i '/# session\s\+required\s\+pam_limits.so/ s/# *//' /etc/pam.d/su

По умолчанию Jenkins устанавливает SSH-соединение с каждым из Node / Slave как userx.

Я установил ulimit, отключил узел и вернул его, и я подумал, что проблема на стороне сеанса.

Так Disconnectудалил весь узел от jenkins и снова перезапустил соединение с ним. Он вернул новую сессию для userx, и это, очевидно, сработало.

Жалко, что я не просмотрел логи, когда отключил узел.

Помните: перевод узла jenkins в автономный режим и его возврат не вызовет нового сеанса SSH.