通过 ulimit 和 sysctl 调整Linux系统性能

目录

  • 一:资源限制管理工具:ulimit
    • [1、ulimit 作用介绍](#1、ulimit 作用介绍)
    • [2、ulimit 常用选项](#2、ulimit 常用选项)
    • [3、ulimit 配置文件](#3、ulimit 配置文件)
  • 二:内核参数调整工具:sysctl
    • [1、sysctl 作用介绍](#1、sysctl 作用介绍)
    • [2、sysctl 常用选项](#2、sysctl 常用选项)
    • [3、sysctl 配置文件](#3、sysctl 配置文件)

一:资源限制管理工具:ulimit

1、ulimit 作用介绍

ulimit 是为用户设定资源限制的工具。 它限制的是用户会话中所有进程的资源使用,而不仅仅是某个单独的进程。通过限制某个用户进程的资源来保该用户的进程不会消耗过多的系统资源。

  • 限制以某个用户身份运行的单个进程可以打开的文件数量。

  • 限制某个用户可以创建的最大进程数。

  • 限制以某个用户身份运行的单个进程可以使用的堆栈大小。

  • 限制以某个用户身份运行的单个进程可以使用的最大虚拟内存量。

  • 限制以某个用户身份运行的单个进程可以使用的最大 CPU 时间。

2、ulimit 常用选项

ulimit -a

  • 显示当前用户的所有资源限制信息。

ulimit -n

  • 如果 不加数字,表示 查看当前用户单个进程可以打开的最大文件数量。
  • 如果 加数字,表示 设置 当前用户单个进程可以打开的文件描述符的最大数量。

ulimit -u

  • 如果 不加数字,表示 查看当前用户可以创建的最大进程数。
  • 如果 加数字,表示 修改最大进程数。

ulimit -s

  • 如果 不加数字,表示 查看当前用户的堆栈大小。
  • 如果 加数字,表示 设置堆栈大小。

ulimit -l

  • 如果 不加数字,表示 查看当前用户最大可锁定的内存大小。
  • 如果 加数字,表示 修改最大可锁定内存大小。

ulimit -t

  • 如果 不加数字,表示 查看当前用户进程的最大 CPU 时间。
  • 如果 加数字,表示 设置进程的最大 CPU 时间(单位:秒)。

通过 ulimit 命令修改资源限制信息

  • 只能修改执行ulimit这个命令的用户的资源限制信息,不能修改其他用户的资源限制信息;

  • 临时生效,该会话结束后,恢复默认值

3、ulimit 配置文件

配置文件名称/etc/security/limits.conf


配置文件格式

bash 复制代码
用户名		限制类型	资源类型	给定的资源值

# 用户名
	# 如果为 * 就表示针对所有用户生效
	# @groupname:表示特定的用户组
	# 
# 限制类型
	# soft:软限制,用户可以在不超出硬限制的情况下,通过命令修改软限制值。
	# hard:硬限制,只能由 root 用户 或具有足够权限的用户修改配置文件实现。
	# -:无类型,包含软限制和硬限制
# 限制的资源类型
	# core:core控制的是操作系统生成的文件大小,这个文件是用来排错的;
	# nproc:控制最大进程数。
	# nofile:控制最大打开文件数。
	# memlock:控制最大内存锁定大小。
	# msgqueue:控制最大消息队列大小。
# 给定的资源值
	# unlimited:表示无限制
	# 数字:表示不能超过这个数字指定值

通过 编辑配置文件修改资源限制信息

  • 需要管理员身份的用户(root)编辑配置文件,可以修改其他用户的资源限制信息;

  • 永久生效,开机会自动加载这个配置文件;

二:内核参数调整工具:sysctl

1、sysctl 作用介绍

sysctl 可以用来修改Linux内核的一些参数,从而实现性能优化。sysctl 主要用于查询和修改 /proc/sys 目录下的内核参数,使用sysctl调整的内核参数也是临时生效。

可以通过写入配置文件( /etc/sysctl.conf )的方式来实现持久化生效。

2、sysctl 常用选项

sysctl -w key=value:临时改变某个指定参数的值

例如:临时开启网络转发

bash 复制代码
sysctl -w net.ipv4.ip_forward=1

sysctl -a:显示所有生效的系统参数


sysctl -p [filename]:修改配置文件后,加载生效(没有指定具体文件系统首先会读取 /etc/sysctl.conf 文件中的设置)


通过sysctl修改的内核参数只会临时生效,系统重启后修改的参数会恢复到初始值;

3、sysctl 配置文件

配置文件格式:

  • 每一行是一个 键值对,其中 key 是内核参数名称,value 是该参数的值。两者之间用 等号(=) 分隔。

  • 键名所表示的路径,是 /proc/sys 目录中的 配置项路径,以/proc/sys为起点,其中斜线用点表示。net.ipv4.ip_forward 对应的文件是 /proc/sys/net/ipv4/ip_forward

sysctl 常用配置:

bash 复制代码
# 设置较低的交换空间使用倾向
vm.swappiness = 0

# 开启网络转发功能
net.ipv4.ip_forward=1

# 禁ICMP回应报文(禁ping)
net.ipv4.icmp_echo_ignore_all=1

通过将相关内核参数写入配置文件,系统重启后仍然会生效;

相关推荐
2501_927283583 小时前
荣联汇智立体仓库:为智慧工厂搭建高效“骨骼”与“中枢”
大数据·运维·人工智能·重构·自动化·制造
kyriewen4 小时前
Webpack vs Vite:一个是“老黄牛”,一个是“猎豹”,你选谁?
前端·webpack·vite
打小就很皮...4 小时前
html2canvas + jsPDF 生成 PDF 的踩坑与解决方案总结
前端·pdf
坚持就完事了4 小时前
YARN资源管理器
大数据·linux·hadoop·学习
全栈前端老曹4 小时前
【前端地图】多地图平台适配方案——高德、百度、腾讯、Google Maps SDK 差异对比、封装统一地图接口
前端·javascript·百度·dubbo·wgs84·gcj-02·bd09
KKKlucifer4 小时前
全域安全运维服务能力建设关键技术解析
运维·安全
Joseph Cooper4 小时前
Linux regmap 子系统实战:在驱动中 dump PMIC 寄存器定位供电问题
linux·运维·服务器
计算机安禾5 小时前
【Linux从入门到精通】第35篇:容器化技术预备——Docker安装与基本概念
linux·运维·docker
雾岛听风6915 小时前
JavaScript基础语法速查手册
开发语言·前端·javascript
子木HAPPY阳VIP5 小时前
信创UOS,Docker 完整操作部署(Dockerfile部署方式)&排错整合
linux·运维·redis·nginx·docker·容器·tomcat