答案是需同步调优kernel.pid_max、ulimit -u和systemd服务limitnproc三者:先用cat /proc/sys/kernel/pid_max查看上限,ps -e --no-headers | wc -l统计使用量,超85%即扩容;临时执行sudo sysctl -w kernel.pid_max=4194304;永久写入/etc/sysctl.conf并sysctl -p;同时在/etc/security/limits.conf设* soft/hard nproc 65535,并为systemd服务单独配置limitnproc=65535。

您在银河麒麟V10系统中运行高并发服务、大量容器或Java多线程应用时,频繁遇到“Resource temporarily unavailable”错误,说明系统最大进程数(即PID编号池)已耗尽,必须调整kernel.pid_max等关键参数才能恢复服务创建能力。
确认当前最大进程数限制
第一步:查看内核级PID上限值,这是全系统硬性天花板:
cat /proc/sys/kernel/pid_max
第二步:统计当前已分配的PID数量,判断是否逼近上限:
ps -e --no-headers | wc -l
若第二步结果持续超过第一步值的85%,则必须扩容。注意:Linux中每个线程也占用一个独立PID,所以高线程应用会快速消耗该资源。
临时提高最大进程数(重启失效)
执行以下命令立即生效,适合紧急恢复或压测验证:
sudo sysctl -w kernel.pid_max=4194304
【此操作仅修改运行时参数,系统重启后还原为默认值】
验证是否生效:
cat /proc/sys/kernel/pid_max
永久修改最大进程数
方法一:写入sysctl配置文件(推荐)
执行命令追加配置:
echo "kernel.pid_max = 4194304" | sudo tee -a /etc/sysctl.conf
加载新配置:
sudo sysctl -p
方法二:直接编辑内核参数文件
用root权限打开配置:
sudo nano /etc/sysctl.conf
在文件末尾新增一行:
kernel.pid_max = 4194304
保存后执行sudo sysctl -p使配置生效。
同步调优关联限制(必须做)
仅改pid_max不够——若ulimit -u(单用户进程/线程总数)仍卡在默认1024,应用启动时会先撞上这层墙。
编辑limits配置:
sudo nano /etc/security/limits.conf
在文件末尾添加两行:
* soft nproc 65535
* hard nproc 65535
注意:systemd服务不读此文件,需额外为关键服务(如dmserver、nginx)在其.service文件中添加LimitNPROC=65535。
最后重启对应服务或重新登录用户,使nproc限制生效。











