通过 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

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

相关推荐
Cobyte4 分钟前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc
NEXT0617 分钟前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
剪刀石头布啊23 分钟前
生成随机数,Math.random的使用
前端
剪刀石头布啊24 分钟前
css外边距重叠问题
前端
剪刀石头布啊24 分钟前
chrome单页签内存分配上限问题,怎么解决
前端
剪刀石头布啊26 分钟前
css实现一个宽高固定百分比的布局的一个方式
前端
Fcy64828 分钟前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满29 分钟前
Linux怎么查看最新下载的文件
linux·运维·服务器
剪刀石头布啊30 分钟前
js数组之快速组、慢数组、密集数组、稀松数组
前端
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法