前文

在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种方法:

  1. ulimit [选项] [数值] (临时调大,重启就失效)
    例如,我想调大系统的最大进程数,就可以这样子:

    ulimit -u 100000
    

    就可以将其调大了。
    其余的参数也是同理,不过要注意,某些参数是可以调为unlimited(无限)的,例如max memory size等,不过请慎重使用,在某些生产环境中,很容易爆炸。

  2. 修改响应配置文件。不过由于这里内容太多、太繁杂,笔者自己也没用过那么多(ΩДΩ),所以只能就我自己的经验,来讲两个吧。

修改最大文件数(open files)和最大进程数(max processes):

  1. 修改/etc/security/limits.conf, 在文件末尾添加:

    * soft nofile 204800
    * hard nofile 204800
    * soft nproc 204800
    * hard nproc 204800
    

    其中:

    *: 代表所有用户,也可以修改为某一特定用户
    hard/soft:代表硬件和软件层面的参数
    nofile: 代表最大文件数; nproc: 最大进程数

  2. 修改以下文件:
    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

即可完成。

posted on   eryoung2  阅读(584)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示