Linux 系统性能调优
概述
在日常运维和架构优化中,Linux 性能调优是提高系统稳定性和运行效率的重要手段。本文结合工作经验,总结了 Linux 服务器常见的优化技巧,涵盖 CPU、内存、磁盘 I/O、网络等多个方面,帮助大家在不同场景下快速定位和优化系统性能瓶颈。
目录
概述
一、CPU 调优
1.1 监控 CPU 负载
1.2 调整 CPU 运行模式
1.3 限制进程 CPU 使用
二、内存优化
2.1 监控内存使用情况
2.2 关闭不必要的服务
2.3 禁用或调整 swap
2.4 增加内存分配限制
三、磁盘 I/O 优化
3.1 监控 I/O 负载
3.2 调整 I/O 调度算法
3.3 启用 TRIM(适用于 SSD)
3.4 增加文件系统缓存
四、网络优化
4.1 监控网络流量
4.2 调整 TCP 参数
4.3 调整连接追踪表大小
五、进程与文件句柄优化
5.1 增加最大文件描述符
5.2 调整最大进程数
5.3 限制 Zombie 进程
六、系统级别优化
6.1 禁用 SELinux(若无安全需求)
6.2 优化日志记录
6.3 关闭 IPv6(若不使用)
一、CPU 调优
1.1 监控 CPU 负载
使用 top
或 htop
观察 CPU 使用率:
top -d 1 # 每秒刷新一次
htop # 更直观的界面
关键指标:
- load average(系统平均负载):通常不应超过 CPU 核心数的 70%
- %us(用户态CPU占用):业务进程消耗
- %sy(内核态CPU占用):系统调用消耗
- %wa(IO等待):高 IO 可能是磁盘瓶颈
- %st(偷取时间):虚拟化环境中 CPU 被其他虚拟机占用
或者使用 mpstat
查看每个 CPU 核心的使用情况:
mpstat -P ALL 1
1.2 调整 CPU 运行模式
在高负载服务器上,建议调整 CPU 运行模式为 性能模式,提高响应速度:
cpupower frequency-set -g performance # 设置为性能模式
1.3 限制进程 CPU 使用
如果某些进程消耗过多 CPU,可使用 cpulimit
限制:
cpulimit -p <PID> -l 50 # 限制进程最多使用 50% CPU
或者用 taskset
绑定进程到特定 CPU 核心:
taskset -c 0,1 ./myapp # 绑定到 CPU 0 和 1
二、内存优化
2.1 监控内存使用情况
使用 free -m
或 vmstat
观察内存占用:
free -h # 查看内存使用
vmstat 1 # 监控 swap、cache
关键指标:
- available:可用内存,低于 20% 可能导致 OOM
- swap:如果 swap 使用率高,说明物理内存不足
- buffers/cache:缓存占比高说明文件 IO 频繁
2.2 关闭不必要的服务
使用 systemctl
禁用无关的系统服务:
systemctl disable --now avahi-daemon
systemctl disable --now cups
2.3 禁用或调整 swap
对于大部分生产环境,swap 过多使用会拖慢系统响应,可适当调整:默认 swappiness
值为 60,建议改为 10 或 0,以减少不必要的 Swap 交换:
sysctl vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf
如果物理内存充足,也可以直接禁用:
swapoff -a
sed -i '/swap/d' /etc/fstab # 永久禁用
2.4 增加内存分配限制
调整 ulimit
限制,提高进程可用的最大文件描述符数:
ulimit -n 65535
echo "* - nofile 65535" >> /etc/security/limits.conf
三、磁盘 I/O 优化
3.1 监控 I/O 负载
使用 iostat
或 iotop
监测磁盘 I/O:
iostat -x 1
iotop
3.2 调整 I/O 调度算法
修改磁盘调度算法(适用于 SSD):
echo "none" > /sys/block/sda/queue/scheduler
持久化设置:
echo 'GRUB_CMDLINE_LINUX="elevator=none"' >> /etc/default/grub
update-grub && reboot
3.3 启用 TRIM(适用于 SSD)
定期手动清理未使用的块:
fstrim -v /
或者启用自动 TRIM:
systemctl enable fstrim.timer
3.4 增加文件系统缓存
提高 dirty_ratio
,减少磁盘写入:
sysctl -w vm.dirty_ratio=20
sysctl -w vm.dirty_background_ratio=5
持久化配置:
echo "vm.dirty_ratio=20" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
四、网络优化
4.1 监控网络流量
使用 iftop
或 nload
监控网络:
iftop -i eth0
nload
4.2 调整 TCP 参数
优化 TCP 连接,减少 TIME_WAIT
状态:
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=600
sysctl -w net.core.somaxconn=65535
持久化配置:
echo "net.ipv4.tcp_tw_reuse=1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle=1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout=30" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time=600" >> /etc/sysctl.conf
echo "net.core.somaxconn=65535" >> /etc/sysctl.conf
sysctl -p
4.3 调整连接追踪表大小
增加 nf_conntrack
的最大连接数,防止大流量导致丢包:
sysctl -w net.netfilter.nf_conntrack_max=524288
echo "net.netfilter.nf_conntrack_max=524288" >> /etc/sysctl.conf
五、进程与文件句柄优化
5.1 增加最大文件描述符
查看当前限制:
ulimit -n
修改 /etc/security/limits.conf
:
* soft nofile 65535
* hard nofile 65535
5.2 调整最大进程数
修改 /etc/security/limits.conf
:
* soft nproc 65535
* hard nproc 65535
5.3 限制 Zombie 进程
减少 defunct
进程数量:
echo 1 > /proc/sys/kernel/pid_max
六、系统级别优化
6.1 禁用 SELinux(若无安全需求)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
6.2 优化日志记录
限制日志大小:
logrotate -f /etc/logrotate.conf
6.3 关闭 IPv6(若不使用)
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
以上优化涵盖了 Linux 服务器的 CPU、内存、磁盘、网络等核心部分。实际工作中,优化应根据业务需求和硬件配置进行权衡。提升 Linux 服务器的性能和稳定性!
相关文章:
Linux 系统性能调优
概述 在日常运维和架构优化中,Linux 性能调优是提高系统稳定性和运行效率的重要手段。本文结合工作经验,总结了 Linux 服务器常见的优化技巧,涵盖 CPU、内存、磁盘 I/O、网络等多个方面,帮助大家在不同场景下快速定位和优化系统性…...
蓝桥杯备考:奶牛晒衣服
这道题第一眼想用贪心做,1 2 3 我们可以让最多的3用烘干机1秒就能完成,那么是不是我们每次都给湿度最大的衣服用烘干机呢?我们试试哈,比如[5,8],每秒晒干1我们给8衣服一直用烘干机是需要4秒的,4秒后8这个…...
英伟达“AI 超级碗”开幕
Nvidia的AI和机器人技术进展 2025年03月19日 | AI日报  欢迎各位人工智能爱好者。 Nvidia的CEO Jensen Huang刚刚拉开了他的“AI超级碗”,并发表了关于该公司最新芯片、…...
Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹
引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…...
KVM安全模块生产环境配置与优化指南
KVM安全模块生产环境配置与优化指南 一、引言 在当今复杂多变的网络安全环境下,生产环境中KVM(Kernel-based Virtual Machine)的安全配置显得尤为重要。本指南旨在详细阐述KVM安全模块的配置方法,结合强制访问控制(M…...
如何设计一个 RPC 框架?需要考虑哪些点?
设计一个完整的 RPC 框架需要覆盖以下核心模块及关键技术点: 一、核心架构模块 模块功能与实现要点服务注册与发现使用 Zookeeper/Nacos 等实现服务地址动态注册与订阅,支持心跳检测和节点变更通知网络通信层基于 Netty 或 gRPC 的 HTTP/2 实现异步非阻…...
dify+deepseek联网搜索:免费开源搜索引擎Searxng使用(让你的大模型也拥有联网的功能)
docker安装SearXng 项目地址:https://github.com/searxng/searxng-docker 第一步 git clone下来 git clone https://github.com/searxng/searxng-docker.git第二步 进入 searxng-docker目录中修改docker-compose.yaml(直接复制粘贴) cd searxng-dockerdocker-compose.yaml …...
主流的Java生态下权限管理框架
在当今国内互联网行业中,主流的Java生态下权限管理框架主要分为三类: 通用权限框架(含认证和权限)权限细粒度控制框架(专注资源访问)企业级安全认证和权限框架(更完善的安全功能) &…...
dijkstra算法——47. 参加科学大会
卡码网:47. 参加科学大会https://kamacoder.com/problempage.php?pid=1047 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。 小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以…...
LAC拨号的L2TP VPN实验
目录 一.拓扑信息 二.需求分析 三.详细配置信息 1.基础信息配置 服务器: 2.建立PPPOE 3.建立L2TP隧道 4.安全策略 四.测试 一.拓扑信息 二.需求分析 一.基础信息配置(IP和安全区域) 二.建立PPPOE连接 是FW1和FW2之间的配置&#…...
天梯赛 PTAL2-009 抢红包
很简单的一道模拟题,使用map统计每个用户的钱数和红包数,最后在使用结构体存储,重载小于号,sort排序即可。 #include <bits/stdc.h> using namespace std; #define endl \n #define int long long typedef long long ll; c…...
信息学奥赛一本通 1831:【03NOIP提高组】神经网络 | 洛谷 P1038 [NOIP 2003 提高组] 神经网络
【题目链接】 ybt 1831:【03NOIP提高组】神经网络 洛谷 P1038 [NOIP 2003 提高组] 神经网络 【题目考点】 1. 图论:拓扑排序,有向无环图动规 【解题思路】 神经网络是一个有向无环图,输入层神经元是入度为0的顶点,…...
如何切换node版本
在Linux或MacOS系统中,切换Node.js版本通常可以通过nvm(Node Version Manager)工具来实现。nvm允许你在不同的Node.js版本之间轻松切换,而无需重新安装或配置。 安装nvm 使用curl命令安装nvm(适用于大多数Linux发行版…...
前端样式库推广——TailwindCss
官方网址: https://tailwindcss.com/docs/installation/using-vite 中文官方文档:https://www.tailwindcss.cn/ github地址:tailwindcss 正在使用tailwindcss的网站:https://tailwindcss.com/showcase 一看github,竟然…...
【前端 vue 或者麦克风,智能语音识别和播放功能】
前端 vue 或者麦克风,智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html(根据自己业务更改) <div class"Page"><el-form ref"mainFormRef" class&qu…...
Java基础编程练习第34题-正则表达式
在Java里,正则表达式是一种强大的文本处理工具,它可以用于字符串的搜索、替换、分割和校验等操作。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。Java通过java.util.regex包提供了对正则表达式的支持。 以下是正则表达式在Jav…...
Java+Html实现前后端客服聊天
文章目录 核心组件网络通信层事件调度层服务编排层 Spring实现客服聊天技术方案对比WebScoket建立连接用户上线实现指定用户私聊群聊离线 SpringBootWebSocketHtmljQuery实现客服聊天1. 目录结构2. 配置类3. 实体类、service、controller4. ChatWebSocketHandler消息处理5.前端…...
基于Spring Boot的冷链物流系统的设计与实现的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
《线程池:Linux平台编译线程池动态库发生的死锁问题》
关于如何编译动态库可以移步《Linux:动态库动态链接与静态库静态链接》-CSDN博客 我们写的线程池代码是闭源的,未来想提供给别人使用,只需要提供so库和头文件即可。 系统默认库文件路径为: usr/lib usr/loacl/lib 系统默认头文件…...
鸿蒙NEXT项目实战-百得知识库03
代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…...
sql server数据迁移,springboot搭建开发环境遇到的问题及解决方案
最近搭建springboot项目开发环境,数据库连的是sql server,遇到许多问题在此记录一下。 1、sql server安装教程 参考:https://www.bilibili.com/opus/944736210624970769 2、sql server导出、导入数据库 参考:https://blog.csd…...
Sensodrive机器人力控关节模组SensoJoint在海洋垃圾清理机器人中的拓展应用
海洋污染已成为全球性的环境挑战,其中海底垃圾的清理尤为困难。据研究,海洋中约有2600万至6600万吨垃圾,超过90%沉积在海底。传统上,潜水员收集海底垃圾不仅成本高昂,而且充满风险。为解决这一问题,欧盟资助…...
matrix-breakout-2-morpheus 靶机----练习攻略 【仅获取shell】
【此练习仅做到反弹shell】 1.靶机下载地址 https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 2. 打开靶机,kali使用nmap扫描同C段的主机 找到靶机ip 确保靶机和kali网卡均为NAT模式 先查看kali的ip nmap 192.168.182.1/24 …...
吴恩达机器学习笔记复盘(八)多元线性回归的梯度下降
简介 梯度下降是多元线性回归的主流优化方法,具有普适性和可扩展性,而标准方程法适用于特定场景。实际应用中需结合特征工程和参数调优提升模型性能。本篇不复盘参数调优。 1.多元线性回归模型 多元线性回归模型假设因变量 与多个自变量 之间存在线性…...
SAP-ABAP: 采购申请创建(PR)BAPI_PR_CREATE 技术指南-详解
BAPI_PR_CREATE 技术指南 用途:通过 RFC 接口创建 SAP 采购申请(PR),支持自动化集成与批量处理。 一、功能概览 类别说明核心功能创建标准采购申请、预留转采购申请,支持多行项目及账户分配。集成场景与 MRP 系统、外…...
Python:单继承方法的重写
继承:让类和类之间转变为父子关系,子类默认继承父类的属性和方法 单继承: class Person:def eat(self):print("eat")def sing(self):print("sing") class Girl(Person):pass#占位符,代码里面类下面不写任何东…...
Cursor解锁Claude Max,助力AI编程新突破!
Cursor 最新推出的 Claude Max 模型,以其卓越的性能和创新的能力,正在重新定义我们对 AI 辅助编程的认知。这款搭载 Claude3.7 大脑的超级模型,不仅具备超强智能,还凭借一系列技术突破,向传统 AI 编程工具发起了挑战。…...
Datawhale coze-ai-assistant 笔记4
课程地址: 第 6 章 应用 - 飞书云文档https://zxdwhda-share.feishu.cn/wiki/Gi9aw4EDTiXxcekUWebcEtmUnb4 应用 AI…...
【基于深度学习的验证码识别】---- part3数据加载、模型等API介绍(2)
四、模型 模型的定义 在机器学习和深度学习中,模型 可以定义为: 一个数学函数或算法,能够从输入数据中提取特征并生成输出。通过训练过程,模型能够学习数据中的规律(如分类、回归、聚类等)。训练完成后&…...
留 言 板
书单 作者:郦波 《五百年来王阳明》 《郦波评说曾国藩家训》《最是人间留不住》《一天一生》 作者:曾仕强 《论语的生活智慧》 《曾仕强详解道德经 道经》 作者: [何勇,陈晓峰著] 《Greenplum企业应用实战 》 作者 Mark G. Sobel…...
3.18练习
BUUCTF练习day2 [GXYCTF2019]Ping Ping Ping ping题有点熟悉的命令注入,使用 127.0.0.1;ls可以得到当前目录的文件名 cat一下flag.php,发现不行 过滤了空格,那我们有什么方法绕过呢 <(重定向符号)${IFS}$IFS$9%09(tab键) 试一试发现过…...
Redis哨兵模式-黑马学习笔记
redis哨兵模式 1.哨兵主要的作用 用于监控主节点的健康情况 如果主节点挂掉立马选择一个从节点顶上去 2.监控的机制 如何监控呢? sentinel基于心跳机制检测主节点的状态 每个1秒向集群发送ping (三体中逻辑用来威胁三体人的心跳检测) 如…...
Linkreate wordpressAI插件 24小时自动生成原创图文,新增从百度、必应搜索引擎自动获取相关下拉关键词
Linkreate wordpressAI插件核心功能亮点 文章生成与优化 自动化文章生成:利用 AI 技术,根据关键词生成高质量文章。 支持指定长度和要求,异步生成不阻塞操作。 且 AI 可自动生成精准的 tag 标签,利于 SEO 优化。 批量生成文章…...
《AI赋能云原生区块链,引领供应链溯源革新》
在数字化浪潮席卷全球的当下,供应链管理领域正经历着深刻变革。云原生区块链凭借其去中心化、不可篡改等特性,为供应链溯源带来了前所未有的透明度与可靠性。而AI的融入,更如虎添翼,以强大的智能分析和决策能力,为云原…...
基于单片机的多功能热水器设计(论文+源码)
1系统方案设计 基于单片机的多功能热水器系统,其系统框图如图2.1所示。主要采用了DS18B20温度传感器,HC-SR04超声波模块,STC89C52单片机,液晶,继电器等来构成整个系统。硬件上主要通过温度传感器进行水温的检测&am…...
Java面试黄金宝典4
1. 什么是泛型 ?与 T 的区别 原理 泛型是 Java 编程语言中的一个强大特性,它提供了编译时类型安全检查机制,允许在定义类、接口和方法时使用类型参数。这些类型参数在使用时会被具体的类型所替代,从而实现代码的复用和类型安全。泛…...
vim在连续多行行首插入相同的字符
工作中经常需要用vim注释掉一段代码或者json文件中的一部分,需要在多行前面插入//或者#符号。在 Vim 中,在连续多行行首插入相同字符主要有以下两种方法: Visual Block 模式插入 将光标移到要插入相同内容的第一行的行首24。按下Ctrl v进入…...
路径问题(greedy):地下城游戏
题目描述: 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健…...
【论文阅读】CARES:医学视觉语言模型可信度的综合基准
CARES:医学视觉语言模型可信度的综合基准 1. 研究背景与动机2. 方法论创新3. 核心实验结果4. 贡献与意义5.总结 CARES: A Comprehensive Benchmark of Trustworthiness in Medical Vision Language Models CARES:医学视觉语言模型可信度的综合基准 Accep…...
Qt窗口坐标体系
坐标系:以左上角为原点(0,0),X向右增加,Y向下增加 对于嵌套窗口,其坐标是相对于父窗口来说的 例如: 通过move方法实现...
英伟达消费级RTX显卡配置表
显卡型号显存大小显存频率显存位宽显存带宽CUDA核心数TDP(功耗)上市年份RTX 409024GB21 Gbps384-bit1,008 GB/s16,384450W2022RTX 4080 (16GB)16GB22.4 Gbps256-bit716.8 GB/s9,728320W2022RTX 4080 (12GB)12GB21 Gbps192-bit504 GB/s7,680285W2023RTX 4…...
1.5.3 掌握Scala内建控制结构 - for循环
Scala的for循环功能强大,支持单重和嵌套循环。单重for循环语法为for (变量 <- 集合或数组 (条件)) {语句组},可选筛选条件,循环变量依次取集合值。支持多种任务,如输出指定范围整数(使用Range、to、until࿰…...
10、STL中的unordered_map使用方法
一、了解 1、unordered_map(哈希) unordered_map是借用哈希表实现的关联容器。 访问键值对O(1),最坏情况O(n),例如哈希冲突严重时。【n是一个哈希桶的元素数量】 unordered_map特性 键值对存储ÿ…...
pycharm-python國際象棋遊戲代碼
嗯,用户的问题是“pycharm寫關於python國際象棋遊戲代碼”,也就是要用PyCharm来写一个Python的国际象棋游戏代码。我需要先整理一下用户提供的搜索结果,看看有什么相关的信息可以利用。 首先看搜索结果中的各个网页内容。网页1主要讲的是象棋…...
Linux下Redis哨兵集群模式搭建(1主2从+3哨兵)
Linux下Redis哨兵集群模式搭建(1主2从3哨兵) 一、Redis哨兵模式搭建 1.安装包下载 链接: https://pan.baidu.com/s/1_n2rCMi5MHX-mVkkyMo4LA 提取码: gbra 2.新建redis目录 mkdir -p /app/redis3.解压到/app/redis目录下 tar -zxvf redis-6.2.16.ta…...
二.使用ffmpeg对原始音频数据重采样并进行AAC编码
重采样:将音频三元组【采样率 采样格式 通道数】之中的任何一个或者多个值改变。 一.为什么要进行重采样? 1.原始音频数据和编码器的数据格式不一致 2.播放器要求的和获取的数据不一致 3.方便运算 二.本次编码流程 1.了解自己本机麦克风参数&#x…...
【初学者】请介绍一下指针分析(Pointer Analysis)?
李升伟 整理 指针分析(Pointer Analysis) 指针分析(Pointer Analysis)是一种静态程序分析技术,用于确定程序中指针可能指向的内存位置或对象。它是编译器优化、程序验证、漏洞检测和并行化等领域的重要基础。 1. 指…...
【程序人生】成功人生架构图(分层模型)
文章目录 ⭐前言⭐一、根基层——价值观与使命⭐二、支柱层——健康与能量⭐三、驱动层——学习与进化⭐四、网络层——关系系统⭐五、目标层——成就与财富⭐六、顶层——意义与传承⭐外层:调节环——平衡与抗风险⭐思维导图 标题详情作者JosieBook头衔CSDN博客专家…...
目标检测20年(一)
今天看的文献是《Object Detection in 20 Years: A Survey》,非常经典的一篇目标检测文献,希望通过这篇文章学习到目标检测的基础方法并提供一些创新思想。 论文链接:1905.05055 目录 一、摘要 1.1 原文 1.2 翻译 二、介绍 三、目标检测…...
SQLMesh系列教程:SQLMesh虚拟数据环境
各种工具都已将软件工程实践引入到数据工程中,但仍有差距存在,尤其是在测试和工作流等领域。SQLMesh 的目标是在这些领域开辟新的天地,解决像 dbt 这样的竞争产品尚未提供强大解决方案的难题。在这篇文章中,我将对 SQLMesh 进行简…...