银河麒麟V10需通过三类方式调优资源限制:1. 用户级永久配置写入/etc/security/limits.conf并重新登录;2. 服务级用systemd edit持久化设置MemoryLimit等参数;3. 进程级在线调整/proc/PID/limits/nofile值。

银河麒麟V10系统中进程频繁因文件打开数不足(如nginx报“too many open files”)、线程数超限或堆栈溢出而崩溃,需修改系统级资源限制配置才能稳定运行高并发服务。
永久修改用户级资源限制
该方法适用于所有普通用户及后续启动的shell子进程,是生产环境最常用且安全的配置方式。
编辑系统级限制配置文件:sudo nano /etc/security/limits.conf
在文件末尾添加四行(注意星号与数值间必须有空格,否则解析失败):
∗ soft nofile 65536
∗ hard nofile 65536
∗ soft nproc 65536
∗ hard nproc 65536
保存退出后,【必须重新登录当前用户会话】,旧终端不会继承新限制。验证命令:ulimit -n 和 ulimit -u,输出应均为65536。
为特定服务进程单独设限
当某个后台服务(如nginx、redis)需要更高或更严苛的资源配额,且不希望影响其他进程时,应使用systemd服务级限制。
方法一:临时设置(重启后失效)
执行 sudo systemctl set-property nginx.service MemoryLimit=1G → 再执行 sudo systemctl daemon-reload → 最后 sudo systemctl restart nginx
方法二:持久化配置(推荐)
运行 sudo systemctl edit nginx.service,在打开的空白文件中输入:
[Service]
MemoryLimit=1G
CPUQuota=75%
保存后无需reload,systemd会自动合并配置。验证方式:sudo systemctl show nginx.service | grep -E "MemoryLimit|CPUQuota"
在线调整正在运行进程的nofile限制
此操作仅对指定PID生效,不重启进程即可缓解突发性文件描述符耗尽问题,但无法突破ulimit硬限制上限。
第一步:确认目标进程PID,例如 nginx 主进程:ps -eo pid,comm | grep nginx | head -1
第二步:检查当前 limits 文件内容:cat /proc/【PID】/limits | grep "Max open files"
第三步:向该进程的 limits 文件写入新值(需root权限且内核支持):
echo -n "65536" > /proc/【PID】/limits/nofile
注意:该操作不可逆,若写入非法值(如非数字、超出内核允许范围),会导致写入失败且无提示;成功后立即生效,无需重启进程。

















