Проблема
Получил java.io.IOException: Too many open files
в индексировании solr через jenkins.
Погуглил и обнаружил, что нужно установить ulimit для поля, в котором мы выполняем задание.
Итак, установите ulimit в окне Linux со спецификацией
Linux x86_64 GNU/Linux
в обоих из следующих способов
ulimit -n 1000000
/etc/security/limits.conf
userx soft nofile 1000000
userx hard nofile 1000000
Дано
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.