前文
在linux中,ulimit是个非常重要的存在,因为它是控制系统性能的一个总指标。我们可以通过调整ulimit的各个参数,达到控制系统性能的目的。
介绍
由于linux是个多用户的实时操作系统,所以多人同时在线是非常正常的。假设有10个人连接上来,每个用户打开10个文档,每个文档10M,那么这对于系统资源是非常大的消耗,同时对系统稳定性也是个非常巨大的挑战。所以,对系统资源进行限制是非常必要的。
ulimit主要的性能指标,我们可以通过ulimit -a命令来查看:
root@home:~# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 47429
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 47429
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
下面我一个一个地介绍下:
- core file size(-c): 最大的core文件的大小,以block为单位。
- data seg size(-d): 进程最大的数据段的大小,以block为单位。
- scheduling priority(-e): 控制进程的nice值(执行优先级),在-20~20之间,-20为优先级最高。
- file size(-f): 进程可以创建文件的最大值,以block为单位。
- pending signals(-i): 待处理信号的最大值。
- max locked memory(-l): 最大可加锁内存大小,以kb为单位。
- max memory size(-m): 最大内存大小,以kb为单位。
- open files(-n): 可打开文件的最大值。
- pipe size(-p): 管道缓冲区的大小,以kb为单位。
- POSIX message queues(-q): POSIX消息队列的最大值。
- real time priority(-r): 实时的进程的nice值。
- stack size(-s): 线程栈大小,以kb为单位。
- Cpu time(t): 最大的cpu占用时间,以秒为单位。
- max user processes(-u): 最大进程数
- virtual memory(-v): 虚拟内存大小,以kb为单位。
- File locks(-x): 文件锁的最大值。
PS:加红的参数是比较常用的,尤其是open file和max user processes,最好还是调大一点比较好。
修改
修改这些变量有2种方法:
-
ulimit [选项] [数值] (临时调大,重启就失效)
例如,我想调大系统的最大进程数,就可以这样子:ulimit -u 100000
就可以将其调大了。
其余的参数也是同理,不过要注意,某些参数是可以调为unlimited(无限)的,例如max memory size等,不过请慎重使用,在某些生产环境中,很容易爆炸。 -
修改响应配置文件。不过由于这里内容太多、太繁杂,笔者自己也没用过那么多(ΩДΩ),所以只能就我自己的经验,来讲两个吧。
修改最大文件数(open files)和最大进程数(max processes):
-
修改/etc/security/limits.conf, 在文件末尾添加:
* soft nofile 204800 * hard nofile 204800 * soft nproc 204800 * hard nproc 204800
其中:
*: 代表所有用户,也可以修改为某一特定用户
hard/soft:代表硬件和软件层面的参数
nofile: 代表最大文件数; nproc: 最大进程数 -
修改以下文件:
for open files: /etc/security/limits.d/def.conf
末尾添加:
* soft nproc 204800
* hard nproc 204800
for max user processors: /etc/security/limits.d/90-nproc.conf
* soft nproc 204800
* hard nproc 204800
即可完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)