新服务器上线优化调整

1. 写入到系统配置

重新登录终端生效配置,只对使用二进制启动的进程生效,对于使用systemd管理的进程不生效,已经运行的进程不生效。

csharp 复制代码
cat >> /etc/security/limits.conf << EOF
# 限制用户能打开的进程数
* soft nproc 1000000
* hard nproc 1000000
# 限制用户能打开的文件描述符数量
* soft nofile 1000000
* hard nofile 1000000
# 允许进程锁定物理内存(禁止交换到 Swap,降低延迟),这里是不限制
* soft memlock unlimited
* hard memlock unlimited
EOF
复制代码
[root@localhost ~]# ulimit -n
1000000
[root@localhost ~]# ulimit -u
1000000
[root@localhost ~]# ulimit -m
unlimited

启动新进程查看效果:

复制代码
[root@localhost ~]# python3 -m http.server 8888  &
[1] 5321
[root@localhost ~]# cat /proc/5321/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             1000000              1000000              processes			# 打开进程数
Max open files            1000000              1000000              files						# 打开文件数
Max locked memory         unlimited            unlimited            bytes					# 最大锁定内存
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       6790                 6790                 signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

2. 写入到systemd配置文件

对使用systemd管理的服务生效,同样已运行的进程不生效。

csharp 复制代码
cat >> /etc/systemd/system.conf << EOF
# 限制用户能打开的文件描述符数量
DefaultLimitNOFILE=1000000
# 限制用户能打开的进程数
DefaultLimitNPROC=1000000
# 允许进程锁定物理内存(禁止交换到 Swap,降低延迟),这里是不限制
DefaultLimitMEMLOCK=infinity
EOF
systemctl daemon-reexec

查看是否生效:

复制代码
[root@localhost ~]# systemctl show --no-pager \
  -p DefaultLimitNOFILE \
  -p DefaultLimitNPROC \
  -p DefaultLimitMEMLOCK
DefaultLimitNOFILE=1000000
DefaultLimitNPROC=1000000
DefaultLimitMEMLOCK=infinity

启动新的service服务查看效果:

复制代码
dnf -y install httpd && systemctl start httpd
[root@localhost ~]# pidof httpd
8672 8671 8670 8669 8668
[root@localhost ~]# cat /proc/5321/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             1000000              1000000              processes   # 最大进程
Max open files            1000000              1000000              files				# 最大文件
Max locked memory         unlimited            unlimited            bytes			# 锁定内存限制
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       6790                 6790                 signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

3. 修改当前运行进程的限制

复制代码
[root@localhost ~]# pidof httpd
4133 4132 4131 4130 4129
[root@localhost ~]# cat /proc/4133/limits | grep -E 'Max processes|Max open files|Max locked memory'
Max processes             6790                 6790                 processes			# 当前最大进程
Max open files            1024                 524288               files					# 当前文件
Max locked memory         8388608              8388608              bytes			# 当前限制内存
[root@localhost ~]# prlimit --pid=4133 \
--nofile=1000000:1000000 \
--nproc=1000000:1000000 \
--memlock=unlimited:unlimited
[root@localhost ~]# cat /proc/4133/limits | grep -E 'Max processes|Max open files|Max locked memory'
Max processes             1000000              1000000              processes			# 修改后
Max open files            1000000              1000000              files						# 修改后
Max locked memory         unlimited            unlimited            bytes					# 修改后

补充:

prlimit:查看或修改运行中进程的系统资源限制(如文件句柄、进程数、锁内存等),支持在线热调整且不中断业务

基本用法:

查看限制:prlimit -p

修改限制:prlimit --pid -- 资源 = 软限:硬限

通用参数:

-p, --pid → 指定进程 PID

-h, --help → 显示帮助

-V, --version → 显示版本

资源限制参数(核心):

-n, --nofile → 最大打开文件数(高并发关键)

-u, --nproc → 最大用户进程 / 线程数

-l, --memlock → 最大锁定物理内存(不换 swap)

其他常用参数:

-c, --core → 核心转储文件大小

-d, --data → 进程数据段大小

-e, --nice → 最大 nice 优先级

-f, --fsize → 文件最大可写大小

-i, --sigpending → 最大挂起信号数

-m, --rss → 常驻内存集

-q, --msgqueue → POSIX 消息队列大小

-r, --rtprio → 实时调度优先级

-s, --stack → 最大栈大小

-t, --cpu → CPU 时间限制

-v, --as → 虚拟内存大小

-x, --locks → 文件锁数量

-y, --rttime → 实时调度 CPU 时间

相关推荐
followless20 小时前
linux server中搭建questasim 10.6c & ise14.7
linux·fpga开发
The Chosen One98520 小时前
【Linux】深入理解Linux进程(二):进程的状态
linux·运维·服务器·开发语言·git
草莓熊Lotso20 小时前
Linux Socket 编程筑基:从底层本质到核心 API,一文吃透 Socket 预备知识
linux·运维·服务器·数据库·c++
hhb_61820 小时前
Terra常见技术问题梳理与实战应用案例解析
运维·服务器·网络
say_fall20 小时前
装软件慢到崩溃?用户创建总出错?Linux 工具避坑指南
linux·运维·服务器·c++·学习
GZ_TOGOGO21 小时前
2026 年 RHCE 考试到底有哪些变化?给你盘盘干货
运维·rhce·rhce考试·rhce认证·it培训·rhce 10.0
小则又沐风a21 小时前
基础的开发工具(2)---Linux
java·linux·前端
yqcoder21 小时前
JavaScript 事件流:从“捕获”到“冒泡”的完整旅程
服务器·前端·javascript
一个学Java小白21 小时前
LV.12 Linux应用开发综合实战-在线词典
linux·运维·服务器
开开心心_Every21 小时前
免费简洁的安卓黄历日历,软件推荐
运维·服务器·随机森林·pdf·电脑·excel·最小二乘法