转:support.huaweicloud.com/usermanual-… 最大文件句柄数即打开文件数的最大限制,Linux系统中包含两个文件句柄限制:一个是系统级的,即所有用户的进程同时打开文件数的上限;一种是用户级的,即单个用户进程打开文件数的上限。但是在容器中,还有另一个文件句柄限制,即容器内部单进程最大文件句柄数。
修改节点系统级最大文件句柄数
-
登录节点,查看/etc/sysctl.conf文件。
cat /etc/sysctl.conf -
修改fs.file-max参数,fs.file-max=1048576为内核参数名称及建议取值。
-
若查看sysctl.conf文件时,文件中已设置fs.file-max值,可通过以下命令进行修改。
sed -i "s/fs.file-max=[0-9]*$/fs.file-max=1048576/g" /etc/sysctl.conf && sysctl -p -
若查看sysctl.conf文件时,文件中还未设置fs.file-max值,可通过以下命令添加。
echo fs.file-max=1048576 >> /etc/sysctl.conf && sysctl -p
-
-
执行以下命令检查是否修改成功,当返回与修改值一致时说明修改正确。
# sysctl fs.file-max fs.file-max = 1048576
修改节点单进程最大文件句柄数
-
登录节点,查看/etc/security/limits.conf文件。
cat /etc/security/limits.conf节点单进程最大文件句柄数通过以下参数设置:
... root soft nofile 65535 root hard nofile 65535 * soft nofile 65535 * hard nofile 65535 -
通过sed命令修改最大文件句柄数,其中65535为最大文件句柄数的建议取值。EulerOS 2.3节点/etc/security/limits.conf中没有nofile相关的默认配置,因此不能通过sed命令进行修改。
sed -i "s/nofile.[0-9]*$/nofile 65535/g" /etc/security/limits.conf -
重新登录节点,执行以下命令检查是否修改成功,当返回与修改值一致时说明修改正确。
# ulimit -n 65535
修改容器单进程最大文件句柄数
-
登录节点,查看/usr/lib/systemd/system/docker.service文件。
-
CentOS/EulerOS系统:
-
docker节点:
cat /usr/lib/systemd/system/docker.service -
containerd节点:
cat /usr/lib/systemd/system/containerd.service
-
-
Ubuntu系统:
-
docker节点:
cat /lib/systemd/system/docker.service -
containerd节点:
cat /lib/systemd/system/containerd.service
-
说明:
LimitNOFILE或LimitNPROC参数设置为infinity时,表示容器单进程最大文件句柄数为1048576。
容器单进程最大文件句柄数通过以下参数设置:
... LimitNOFILE=1048576 LimitNPROC=1048576 ... -
-
执行如下命令修改两个参数,其中1048576为最大文件句柄数的建议取值。
须知:
修改容器最大文件句柄数将会重启docker/containerd进程,请知悉。
-
CentOS/EulerOS系统:
-
docker节点:
sed -i "s/LimitNOFILE=[0-9a-Z]*$/LimitNOFILE=1048576/g" /usr/lib/systemd/system/docker.service;sed -i "s/LimitNPROC=[0-9a-Z]*$/LimitNPROC=1048576/g" /usr/lib/systemd/system/docker.service && systemctl daemon-reload && systemctl restart docker -
containerd节点:
sed -i "s/LimitNOFILE=[0-9a-Z]*$/LimitNOFILE=1048576/g" /usr/lib/systemd/system/containerd.service;sed -i "s/LimitNPROC=[0-9a-Z]*$/LimitNPROC=1048576/g" /usr/lib/systemd/system/containerd.service && systemctl daemon-reload && systemctl restart containerd
-
-
Ubuntu系统:
-
docker节点:
sed -i "s/LimitNOFILE=[0-9a-Z]*$/LimitNOFILE=1048576/g" /lib/systemd/system/docker.service;sed -i "s/LimitNPROC=[0-9a-Z]*$/LimitNPROC=1048576/g" /lib/systemd/system/docker.service && systemctl daemon-reload && systemctl restart docker -
containerd节点:
sed -i "s/LimitNOFILE=[0-9a-Z]*$/LimitNOFILE=1048576/g" /usr/lib/systemd/system/containerd.service;sed -i "s/LimitNPROC=[0-9a-Z]*$/LimitNPROC=1048576/g" /usr/lib/systemd/system/containerd.service && systemctl daemon-reload && systemctl restart containerd
-
-
-
查看容器单进程最大文件句柄数,当返回与修改值一致时说明修改正确。
-
docker节点:
# cat /proc/`pidof dockerd`/limits | grep files Max open files 1048576 1048576 files -
containerd节点:
# cat /proc/`pidof containerd`/limits | grep files Max open files 1048576 1048576 files
-
创建节点/节点池时自动配置最大文件句柄数
您可以设置节点或节点池安装后执行脚本,在新建节点或节点池时通过脚本配置最大文件句柄数。
-
首先您需要确认创建节点或节点池的操作系统,例如CentOS 7.6。
-
在同集群、同操作系统的节点上,参考以下文档进行脚本命令可行性的测试,在节点上手动执行命令,确认脚本命令可行。
-
(以下命令均需在手动执行命令验证成功后配置) 在创建节点或节点池时,在“高级配置 > 安装后执行脚本”中添加可执行的脚本命令。
-
修改节点系统级最大文件句柄数:
-
登录节点查看/etc/sysctl.conf文件,若文件中已设置fs.file-max值,可通过以下命令进行修改。
sed -i "s/fs.file-max=[0-9]*$/fs.file-max=1048576/g" /etc/sysctl.conf && sysctl -p -
登录节点查看/etc/sysctl.conf文件,若文件中还未设置fs.file-max值,可通过以下命令添加。
echo fs.file-max=1048576 >> /etc/sysctl.conf && sysctl -p
其中fs.file-max=1048576为内核参数名称及建议取值。
-
-
修改节点单进程最大文件句柄数:
sed -i "s/nofile.[0-9]*$/nofile 65535/g" /etc/security/limits.conf其中65535为最大文件句柄数的建议取值。
-
修改容器单进程最大文件句柄数:
-
CentOS/EulerOS系统:
sed -i "s/LimitNOFILE=[0-9a-Z]*$/LimitNOFILE=1048576/g" /usr/lib/systemd/system/docker.service;sed -i "s/LimitNPROC=[0-9a-Z]*$/LimitNPROC=1048576/g" /usr/lib/systemd/system/docker.service && systemctl daemon-reload && systemctl restart docker -
Ubuntu系统:
sed -i "s/LimitNOFILE=[0-9a-Z]*$/LimitNOFILE=1048576/g" /lib/systemd/system/docker.service;sed -i "s/LimitNPROC=[0-9a-Z]*$/LimitNPROC=1048576/g" /lib/systemd/system/docker.service && systemctl daemon-reload && systemctl restart docker
其中1048576为最大文件句柄数的建议取值。
-
下图中命令仅做示例,请根据实际情况填写。
-
-
节点创建完成后,登录节点查看参数是否修改成功。
父主题: 节点系统参数优化