如何使用ansible增加打开进程和文件的限制

Eri*_* Na 7 mysql ansible ansible-playbook

我正在建立一个MySQL服务器,我被告知要增加ulimit打开进程的数量.

我跑了

- name: "increase limit for the number of open files"
  shell: "ulimit -n 64000"
- name: "increase limit for the number of open processes"
  shell: "ulimit -u 64000"
Run Code Online (Sandbox Code Playgroud)

ansible-playbook,但它不仅会抛出错误"非法选项-u",而且打开文件限制(-n)似乎没有得到修改.(我ulimit -n在服务器上运行但它保持不变)

增加这些限制的推荐方法是什么,我应该如何在Ansible中进行?

我看到了pam_limits模块.我应该使用这个模块修改nprocnofile?如果是这样,哪个域?

谢谢.

tad*_*man 15

实际上,您需要做几件事来永久地增加文件句柄的数量.你在这里尝试的是一个临时措施,只有在shell存在的情况下才存在,它不会这样做.

我发现你需要修复三件事才能正确应用.

前两个与sysctlPAM limits.d配置有关:

- name: Set sysctl File Limits
  copy:
    src: 50-fs.conf
    dest: /etc/sysctl.d

- name: Set Shell File Limits
  copy:
    src: 91-nofiles.conf
    dest: /etc/security/limits.d
Run Code Online (Sandbox Code Playgroud)

50-fs.conf文件如下所示:

fs.file-max=262144
Run Code Online (Sandbox Code Playgroud)

91-nofiles.conf文件如下所示:

 *     soft nofile 262144
 *     hard nofile 262144
Run Code Online (Sandbox Code Playgroud)

这样可以处理系统范围的配置.如果您使用的是发行版systemd,则需要进行调整:

- name: Set MariaDB Filehandle Limits
  notify: Reload systemctl
  copy:
    src: limits.conf
    dest: /lib/systemd/system/mariadb.service.d
Run Code Online (Sandbox Code Playgroud)

这需要重新加载systemctl,因此您可能需要添加一个handler:

- name: Reload systemctl
  shell: systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

您正在复制的文件如下所示:

[Service]
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Run Code Online (Sandbox Code Playgroud)

这是从默认服务配置文件中的示例中获取的.

最后要做的是确保my.cnf您的配置中包含此指令的商店或其他商店:

open_files_limit=16384
Run Code Online (Sandbox Code Playgroud)

您可能还想添加它:

open_files_limit=16384
max_connections=16384
Run Code Online (Sandbox Code Playgroud)

您可以使用您认为合适的任何值.

  • 请注意,现在可以使用ansible中的pam_limits模块设置系统限制.http://docs.ansible.com/ansible/pam_limits_module.html (8认同)
  • @idjaw 这里有四个级别的限制:系统、PAM 和进程启动器(例如“systemd”),加上“my.cnf”应用程序本身。我试图在这里解决所有这些问题。Ansible 解决方案只是这个难题的一部分。 (2认同)

Eze*_*eno 14

从Ansible 2.0.0开始,一个新的官方模块支持配置PAM.

# Add or modify nofile soft limit for the user joe
- pam_limits:
    domain: joe
    limit_type: soft
    limit_item: nofile
    value: 64000
Run Code Online (Sandbox Code Playgroud)