配置limits.conf解除Linux中用户或进程的资源限制
配置limits.conf解除Linux中用户或进程的资源限制
为了优化如数据库、Nginx的软件性能, 可以通过修改 /etc/security/limits.conf
文件, 解除操作系统对程序使用资源的限制
这个文件主要用于配置用户或进程的资源限制, 比如可以打开的文件数nofile
、可以创建的进程数nproc
等
/etc/security/limits.conf
文件详解
打开这个文件, 在文件的末尾添加或修改以下内容, 这里以mysql
为例设定资源限制
1 | mysql soft nice 0 |
各个参数的含义
nice
设置了mysql
用户的进程优先级 (nice
值) 为 0。nice
值用于控制进程的调度优先级, 值越低, 优先级越高。这里设置为 0, 表示默认的优先级, 没有增加或减少优先级。as
(Address Space)
设置了mysql
用户的虚拟内存地址空间(即进程可以使用的最大内存)为无限制 (unlimited
)。这意味着不限制该用户进程可以分配的内存大小。fsize
(File Size)
设置了mysql
用户创建的文件大小为无限制 (unlimited
)。这意味着用户创建的文件没有大小限制。nproc
(Number of Processes)
设置了mysql
用户可以创建的最大进程数为 65536。soft
是在普通情况下的限制, 而hard
是用户不能超过的限制。nofile
(Number of Open Files)
设置了mysql
用户可以同时打开的最大文件数为 65536。这是为了防止文件句柄不足问题, 特别是在高并发情况下。core
(Core File Size)
设置了mysql
用户生成的核心转储文件的大小为无限制 (unlimited
)。核心转储文件用于调试时记录程序崩溃时的内存状态。data
(Data Segment Size)
设置了mysql
用户的数据段大小为无限制 (unlimited
)。数据段是进程所能占用的内存区域之一, 这里设置为无限制, 允许进程使用尽可能多的内存。
这些配置为 mysql
用户配置了非常宽松的系统资源限制, 具体包括:
- CPU 优先级 (
nice
) 被固定为 0, 意味着其进程不会被优先调度, 但也不会被降级。 - 内存使用 (
as
)、文件大小 (fsize
)、核心转储文件大小 (core
)、数据段大小 (data
) 均不受限制, 允许该用户进程使用尽可能多的系统资源。 - 允许创建最多 65536 个进程 (
nproc
) 和 **同时打开最多 65536 个文件 (nofile
)**。
在更改配置后, 重启mysql
以应用新的资源限制
验证配置是否生效
1 | su -s /bin/bash mysql -c "ulimit -a" |
这将显示当前mysql
用户的资源限制设置, 可以检查nofile
和nproc
的值是否与配置一致, 如果没有, 需要修改PAM模块
确保 PAM 模块加载了这些限制
确保/etc/pam.d/common-session
和/etc/pam.d/common-session-noninteractive
文件中包含以下行:
1 | session required pam_limits.so |
这行配置确保PAM
会加载limits.conf
中的设置。