实际上,您需要执行几项操作才能永久提高文件句柄数量。您所尝试的是一种临时措施,只存在于 shell 的生命周期中,它不会生效。
我发现您需要解决三个问题才能正确应用此方法。
前两个问题与 sysctl
和 PAM 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
50-fs.conf
文件如下:
fs.file-max=262144
91-nofiles.conf
文件的内容如下:
* soft nofile 262144
* hard nofile 262144
这样就处理了系统范围的配置。如果您使用的是 systemd
发行版,则还需要进行相应的调整:
- name: Set MariaDB Filehandle Limits
notify: Reload systemctl
copy:
src: limits.conf
dest: /lib/systemd/system/mariadb.service.d
这需要重新加载systemctl
,因此您可能需要为此添加一个handler
:
- name: Reload systemctl
shell: systemctl daemon-reload
您要复制的文件看起来像这样:
[Service]
LimitNOFILE=infinity
LimitMEMLOCK=infinity
这是从默认服务配置文件的示例中获取的。
最后要做的事情是确保my.cnf
或任何存储您的配置的文件中有这个指令:
open_files_limit=16384
你可能也想添加这个:
open_files_limit=16384
max_connections=16384
您可以使用您认为适当的任何值。