Мне нужно, чтобы mysql использовал большие страницы, чтобы установить ulimit - я сделал это в limit.conf. Однако limit.conf (pam_limits.so) не читается для init, только для "настоящих" оболочек. Я решил это раньше, добавив «ulimit -l» в функцию запуска initscript. Мне нужен какой-то повторяемый способ сделать это, теперь, когда ящики управляются с помощью chef, и мы не хотим принимать файл, который фактически принадлежит RPM.
18
Ответы:
4 шага могут изменить пределы вашей системы немедленно, и могут работать после перезагрузки. Вы можете изменить число «102400» на максимальное количество открытых файлов в вашей системе Linux, как вы хотите. и
загрузить в настройках sysctl из указанного файла или /etc/sysctl.conf, если ничего не указано.
источник
*
не работает дляroot
пользователя, вам придется указатьroot
явно .../etc/sysctl.conf должен иметь возможность устанавливать элементы ulimits. Я не смог проверить это хорошо, но опрос говорит, что вы сможете остановиться после того, как он установлен в sysctl.conf.
Я нашел различные темы, которые показывают, что это все еще проблема, и моя команда и я обсудили некоторые варианты этого, мы нашли два возможных обходных пути.
Вариант 1. Большинство исходных скриптов rhel initscripts /etc/init.d/functions, вы можете изменить там настройки ulimit
Вариант 2: init утверждает, что / etc / initscript исходит каждый раз перед тем, как init вызывает что-либо, смотрите: http://linux.die.net/man/5/initscript . Достаточно интересно, что они говорят, где люди могут установить ulimit =)
источник
Автономный фрагмент рецепта на основе этого URL:
Фрагмент рецепта:
источник
Моим решением было сделать это по рецепту нашего шеф-повара:
Это приводит к
ulimit -l
тому, что устанавливается для всех начальных сценариев, что может быть нежелательно в некоторых средах, но хорошо для моего.В идеальном мире я бы обновил RPM, включив в него
/etc/sysconfig/mysqld
, и вставил туда ту же команду ulimit -l.источник
Не уверен, насколько это конкретно для дистрибутива, но я только что включил увеличение лимита безопасности при использовании
/etc/security/limits.d/20-somefile.conf
в Ubuntu.Вместо того, чтобы изменять существующий файл, у меня есть шаблон ERB в моей кулинарной книге, я устанавливаю атрибуты по умолчанию в файле атрибутов, и мне не нужно беспокоиться об использовании рубиновых блоков с материалом "insert_line_if_no_match" - который кажется немного более сложным и рецепт немного более читабелен, как это:
и тогда это мой файл шаблона:
источник
согласно справочной странице ulimit устарела. Вам нужно использовать setrlimit. Проблема в том, что это системный вызов, а не команда bash.
У меня была эта проблема с руководителем, и это то, что я узнал. Если у процесса нет файла конфигурации, который позволяет вам выполнить системный вызов setrlimit (). Установите его с помощью ulimit в своем скрипте /etc/init.d bash. Это служебный скрипт, который запускает ваш процесс.
Если у процесса есть файл конфигурации, например, supervisor d, то вы можете использовать этот файл конфигурации, чтобы установить количество файлов и сделать так, чтобы процесс непосредственно вызвал setrlimits ().
Руководитель: http://supervisord.org/configuration.html#supervisord-section-settings
TomcaT: http://www.jayway.com/2012/02/11/how-to-really-fix-the-too-many-open-files-problem-for-tomcat-in-ubuntu/
источник
Способ RedHat, описанный в статье 253043 (требуется подписка), заключается в добавлении соответствующих операторов ulimit
/etc/sysconfig/<service name>
. Например:(Используйте существующий файл для вашей службы вместо myServiceName.)
Для демонов, которые запускаются без использования скрипта RedHat «sysconfig», вам необходимо добавить соответствующие строки ulimit в скрипт запуска демона.
источник
Попробуйте настроить это в файле /etc/sysctl.conf
источник
Я на самом деле написал личную поваренную книгу шеф-повара, которая используется для установки ulimit для нас, и она работает довольно хорошо. Для Ubuntu мы нашли следующий трюк, если вам нужна глобальная настройка ulimit:
Добавьте следующее к вашей общей сессии:
и в limit.conf у вас должно быть следующее:
Корневая часть важна, так как кажется, что некоторые сценарии инициализации не будут работать правильно. Итак, у нас есть поваренная книга, которая настроена следующим образом, и она прекрасно работает.
Другим вариантом, который мы использовали для Tomcat, было развертывание Tomcat, а затем перезаписать сценарий инициализации с помощью пользовательского параметра, для которого мы установили бы ulimit и перезапустили tomcat. Это прекрасно работает, но немного более хакерски, чем первый.
Я надеюсь, что это поможет, и, возможно, когда-нибудь я смогу открыть исходный код поваренной книги, которая у нас есть, поскольку она довольно проста, но может быть полезна другим, таким как вы.
источник