Как установить ulimits для сервиса, запускающегося при начальной загрузке?

Вы используете старую версию PDF ifilter (и инструкции...) Попытка, получая PDF iFilter 9 для 64-разрядных платформ и следуете инструкциям внизу страницы для установки его в SharePoint.

18
задан 30 March 2012 в 10:48
9 ответов
$ echo "* hard nofile 102400" >> /etc/security/limits.conf
$ echo "* soft nofile 102400" >> /etc/security/limits.conf
$ sysctl -w fs.file-max=102400
$ sysctl -p

Эти 4 шага могут немедленно изменить ограничения вашей системы и могут работать после перезагрузки. Вы можете изменить число "102400" на максимальное количество открытых файлов в вашей системе Linux, как хотите. и

$ sysctl -p

для загрузки настроек sysctl из указанного файла или /etc/sysctl.conf, если не указан.

8
ответ дан 2 December 2019 в 20:26

Мое решение просто делало это в нашем рецепте шеф-повара:

# Ensure ulimits are properly set for the initscript
bash "Set Ulimits" do
    user "root"
    code <<-EOH
    echo -e "n#Setting ulimits. Performed by chef recipe MYSQLULIMIT\nulimit -l" >> /etc/sysconfig/init
    EOH
    not_if "grep MYSQLULIMIT /etc/sysconfig/init"
end

Это приводит к установке ulimit -l для всех сценариев инициализации, что может быть нежелательно в некоторых средах , но мне подходит.

В идеальном мире я бы обновил RPM, включив в него / etc / sysconfig / mysqld , и поместил бы туда ту же команду ulimit -l.

0
ответ дан 2 December 2019 в 20:26

Попробуйте настроить это в файле /etc/sysctl.conf

-1
ответ дан 2 December 2019 в 20:26

На самом деле я написал личную поварскую книгу, которая используется для установки ulimit для нас, и она работает очень хорошо. Мы обнаружили, что для ubuntu следующий трюк необходим, если вы хотите установить глобальный ulimit:

Добавьте следующее в свой common-session:

session required        pam_limits.so

и в limit.conf у вас должно быть следующее:

* soft  nofile  64000
* hard  nofile  65000

root  soft  nofile  64000
root  hard  nofile  65000

Корневая часть важно, поскольку кажется, что без этого некоторые сценарии инициализации не будут работать правильно. Итак, у нас есть кулинарная книга для шеф-повара, которая настраивает следующее, и она отлично работает.

Другой вариант, который мы использовали для Tomcat, - это развернуть Tomcat, а затем перезаписать сценарий инициализации пользовательским, для которого мы бы установили ulimit и перезапустили tomcat. Это отлично работает, но немного сложнее, чем первое.

Надеюсь, это поможет,

-1
ответ дан 2 December 2019 в 20:26

/etc/sysctl.conf должен иметь возможность устанавливать элементы ulimits. Мне не удалось это хорошо протестировать, но в опросе говорится, что вы сможете остановиться после того, как он будет установлен в sysctl.conf.

Я нашел различные темы, которые показывают, что это все еще проблема, и мы с моей командой обсудили Некоторые варианты решения этой проблемы мы нашли два возможных решения.

Вариант 1: Большинство сценариев инициализации rhel исходят из /etc/init.d/functions, вы можете изменить там настройки ulimit

Вариант 2: init утверждает, что / etc / initscript создается каждый раз до того, как init порождает все, что видит: http://linux.die.net/man/5/initscript . Интересно, что они говорят, что здесь люди могут установить ulimit =)

2
ответ дан 2 December 2019 в 20:26

Автономный фрагмент рецепта, основанный на этом URL:

http://pro.benjaminste.in/post/318453669/increase-the-number-of-file-descriptors-on-centos-

Фрагмент рецепта:

ruby_block "edit /etc/sysctl.conf" do
  _file = "/etc/sysctl.conf"
  _comment = "# TWEAK BY CHEF"
  _content = "fs.file-max = 512000"
  block do
    file = Chef::Util::FileEdit.new(_file)
    file.insert_line_if_no_match(/#{Regexp.escape(_comment)}/, "#{_comment}\n#{_content}")
    file.write_file
  end
  not_if "cat #{_file} | grep '#{_comment}'"
  notifies :run, "execute[sysctl -p]", :immediately
end

execute "sysctl -p" do
  command "sysctl -p"
  returns 255 # which would normally signify error, but doesn't on sysctl on CentOS
  action :nothing
end

ruby_block "edit /etc/security/limits.conf" do
  _file = "/etc/security/limits.conf"
  _comment = "# TWEAK BY CHEF"
  _content = "* - nofile 65535"
  block do
    file = Chef::Util::FileEdit.new(_file)
    file.insert_line_if_no_match(/#{Regexp.escape(_comment)}/, "#{_comment}\n#{_content}")
    file.write_file
  end
  not_if "cat #{_file} | grep '#{_comment}'"
end
1
ответ дан 2 December 2019 в 20:26

Не уверен, насколько это зависит от дистрибутива, но я только что увеличил лимит безопасности, используя /etc/security/limits.d/20-somefile.conf в Ubuntu.

Вместо того, чтобы изменять существующий файл, у меня есть шаблон ERB в моей кулинарной книге, я устанавливаю атрибуты по умолчанию в файле атрибутов, а затем мне не нужно беспокоиться об использовании рубиновых блоков с «insert_line_if_no_match» - это кажется немного более запутанным, а рецепт более читабельным:

execute "activate_sysctl" do
  user "root"
  command "sysctl -p /etc/sysctl.d/10-filemax.conf"
  action :nothing
end

template "/etc/sysctl.d/10-filemax.conf" do
  source "system/filemax.conf"
  action :create
  notifies :run, "execute[activate_sysctl]", :immediately
end

а затем это мой файл шаблона:

fs.filemax = <%= node[:mycookbook][:system_fs_filemax] %>
0
ответ дан 2 December 2019 в 20:26

согласно man page ulimit устарел. Вы должны использовать сетримит. Проблема в том, что это системный вызов, а не команда bash.

У меня была проблема с супервизором, и вот что я выяснил. Если процесс не имеет конфигурационного файла, позволяющего сделать вызов setrlimit() системного вызова. Установите его с помощью ulimit в его скрипте /etc/init.d bash. Это служебный скрипт, который запускает ваш процесс.

Если у процесса есть конфигурационный файл, например, супервизор 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/

0
ответ дан 2 December 2019 в 20:26

Способ RedHat, как описано в статье 253043 (требуется подписка) заключается в добавлении соответствующих операторов ulimit в / etc / sysconfig / <имя службы> . Например:

# echo "ulimit -SHn 10240   # nfile" >> /etc/sysconfig/myServiceName

(Используйте существующий файл для вашей службы вместо myServiceName.)

Для демонов, которые запускаются без использования сценария RedHat «sysconfig», вам необходимо добавить соответствующие строки ulimit в сценарий запуска демона.

0
ответ дан 2 December 2019 в 20:26

Теги

Похожие вопросы