当前位置: 首页 > news >正文

9.Linux 调优与性能检测

Linux : 调优与性能检测

一、影响 Linux 服务器性能的主要因素

  1. CPU
  2. Memory (内存)
  3. 磁盘 I/O
  4. 网络

二、性能检测工具

1. CPU 性能检测

  • 查看 CPU 信息:
    • cat /proc/cpuinfo
    • lscpu
  • 查看系统平均负载 (Load Average):
    • uptime - 显示系统在 1 分钟、5 分钟、15 分钟内的平均负载情况。
  • 查看系统整体状态 (CPU, 内存, I/O, 进程等):
    • vmstat (常用选项如 vmstat 1 每秒刷新一次)
    • 输出字段解读:
      • procs (进程):
        • r: 等待运行的进程数。
        • b: 处于不可中断休眠状态(通常是在等待 I/O)的进程数。
      • memory (内存,单位 KB/MB):
        • swpd: 已使用的虚拟内存大小。
        • free: 空闲的物理内存大小。
        • buff: 用作缓冲的内存大小。
        • cache: 用作缓存的内存大小。
      • swap (交换分区):
        • si: 每秒从磁盘交换到内存的数据量 (Swap In)。
        • so: 每秒从内存交换到磁盘的数据量 (Swap Out)。si/so 长期大于 0 表示内存不足。
      • io (块设备 I/O,单位 块/秒):
        • bi: 每秒从块设备接收的块数 (Blocks In,读操作)。
        • bo: 每秒发送到块设备的块数 (Blocks Out,写操作)。
      • system (系统):
        • in: 每秒的中断数 (包括时钟中断)。
        • cs: 每秒的上下文切换次数 (Context Switch)。
      • cpu (CPU 使用率百分比):
        • us: 用户进程消耗的 CPU 时间 (user time)。
        • sy: 内核进程消耗的 CPU 时间 (system time)。
        • id: CPU 空闲时间 (idle time)。
        • wa: 等待 I/O 操作完成的 CPU 时间 (I/O wait time)。高值通常表示 I/O 瓶颈。
        • st: 虚拟机等待物理 CPU 资源的时间 (steal time)。在虚拟化环境中,如果此值较高,表示物理 CPU 资源紧张。

2. 内存 (Memory) 性能检测

  • 动态查看进程和系统资源使用:
    • top (按 M 按内存排序,按 P 按 CPU 排序,按 q 退出)
  • 查看内存使用概况:
    • free -m (以 MB 为单位显示)
    • free -h (以人类可读格式显示,如 G, M)

3. 磁盘 I/O 性能检测

  • 安装工具: yum install sysstat (CentOS/RHEL) 或 apt install sysstat (Debian/Ubuntu)
  • 查看磁盘 I/O 统计:
    • iostat -d (显示磁盘报告)
    • iostat -dx 1 (每秒刷新一次,显示扩展统计信息)
  • 关键输出字段解读 (iostat -d):
    • tps: 每秒发送到设备的 I/O 请求数 (Transfers Per Second)。
    • kB_read/s: 每秒从设备读取的数据量 (KB)。
    • kB_wrtn/s: 每秒写入设备的数据量 (KB)。
    • kB_read: 读取的总数据量 (KB)。
    • kB_wrtn: 写入的总数据量 (KB)。

4. 网络性能检测

  • 测试网络连通性与延迟:
    • ping <目标主机或IP>
  • 查看网络连接、监听端口和统计信息:
    • ss -tnl (查看所有 TCP 监听端口) - 推荐使用,比 netstat 更高效。
    • netstat -tulnp (查看 TCP/UDP 监听端口及关联进程 PID/名称) - 传统命令。

三、系统性能调优 (tuned)

tuned 是一个系统调优守护进程,提供预定义配置文件和动态调优能力。

  • 配置文件类型:
    • 静态调优: 在服务启动或选择新配置文件时应用设置。
    • 动态调优: tuned 守护进程监视系统活动,并根据运行时行为动态调整设置。
  • 常用预定义配置文件 (tuned-adm list):
    • balanced: 节能与性能的平衡(默认配置,适合大多数场景)。
    • desktop: 基于 balanced,优化交互式应用响应速度。
    • throughput-performance: 最大化系统吞吐量(牺牲部分节能)。
    • latency-performance: 最大化系统响应速度,降低延迟(牺牲节能)。
    • network-latency: 基于 latency-performance,增加网络低延迟优化。
    • network-throughput: 基于 throughput-performance,增加网络吞吐量优化。
    • powersave: 最大化节能(可能牺牲性能)。
    • virtual-guest: 优化在虚拟机内运行的操作系统性能。
    • virtual-host: 优化作为虚拟机宿主机(Hypervisor)的系统性能。
  • tuned-adm 管理命令:
    • tuned-adm active: 查看当前活动的调优配置文件。
    • tuned-adm list: 列出所有可用调优配置文件及其描述。
    • tuned-adm profile <profile_name>: 切换到指定的调优配置文件 (如 tuned-adm profile throughput-performance)。
    • tuned-adm recommend: 显示系统推荐的默认调优配置文件。
    • tuned-adm off: 关闭 tuned 调优,恢复系统默认设置。

四、进程优先级管理 (nice 和 renice)

Linux 进程调度器使用 nice 值调整进程的 CPU 时间分配优先级。

  • nice 值范围: -20 (最高优先级) 到 19 (最低优先级)。
  • 默认值: 进程通常继承父进程的 nice 值,默认为 0
  • 规则:
    • nice 值越高,优先级越低(更愿意让出 CPU)。
    • nice 值越低,优先级越高(更倾向于占用 CPU)。
    • 普通用户: 只能降低自己进程的优先级(提高 nice 值),不能提高优先级(降低 nice 值)或修改其他用户的进程。
    • root 用户: 可以任意提高或降低任何进程的优先级。
  • 管理命令:
    • 查看进程优先级:
      • ps axo pid,comm,nice --sort=-nice (按 nice 值降序排列,高优先级在前)
      • ps axo pid,comm,nice --sort=nice (按 nice 值升序排列,低优先级在前)
      • ps -o pid,comm,nice <PID> (查看指定进程的优先级)
    • 启动时设置优先级: nice -n <nice_value> <command> (如 nice -n 10 sha1sum /dev/zero &)
    • 修改运行中进程的优先级: renice -n <new_nice_value> <PID> (如 renice -n 19 1234)

五、Linux 内核优化

  1. 升级内核:

    • rpm -ivh kernel-<version>.<arch>.rpm (安装新内核 RPM 包)
    • 重要提示: 升级内核后需要重启系统 (reboot) 生效。
  2. 内核模块管理:

    • 模块存放目录: /lib/modules/$(uname -r)/
    • 查看当前内核版本: uname -r (输出如 3.10.0-957.el7.x86_64)
      • 版本号组成:
        • 3: 主版本号 (Major Version)
        • 10: 次版本号 (Minor Version) - 偶数为稳定版 (Stable),奇数为开发版 (Development)
        • 0: 修订版本号 (Revision Level)
        • 957: 特定于发行版(如 RHEL/CentOS)的补丁号/编译号
        • el7: Enterprise Linux 7 (发行版标识)
        • x86_64: 硬件平台架构
    • 查询已加载模块: lsmod
    • 查看模块详细信息: modinfo <module_name> (如 modinfo xfs)
    • 加载模块: modprobe <module_name> (如 modprobe ext4)
    • 卸载模块: modprobe -r <module_name> (如 modprobe -r ext4)
  3. 内核参数优化 (/etc/sysctl.conf):

    • 启用 IP 转发 (如路由器/网关):

      # 编辑配置文件
      vim /etc/sysctl.conf
      # 添加或修改以下行
      net.ipv4.ip_forward = 1
      # 应用更改
      sysctl -p /etc/sysctl.conf
      
    • 开启禁 Ping (忽略所有 ICMP Echo 请求):

      # 编辑配置文件
      vim /etc/sysctl.conf
      # 添加或修改以下行
      net.ipv4.icmp_echo_ignore_all = 1  # 值 1 表示忽略,0 表示响应
      # 应用更改
      sysctl -p /etc/sysctl.conf
      
    • 其他优化: 可根据需要调整 sysctl.conf 中的大量参数(如 TCP 缓冲区大小、连接跟踪、文件句柄数等)。修改后务必执行 sysctl -p 使配置生效。

http://www.dtcms.com/a/307416.html

相关文章:

  • 前端框架Vue3(四)——组件通信及其他API
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第一天(HTML5)
  • Java WEB技术-序列化和反序列化认识(SpringBoot的Jackson序列化行为?如何打破序列化过程的驼峰规则?如何解决学序列化循环引用问题?)
  • Amazon RDS for MySQL成本优化:RDS缓存降本实战
  • 三坐标测量机路径规划与补偿技术:如何用算法看见微米级误差?
  • 抖音集团基于Paimon的流式数据湖应用实践
  • 常见的中间件漏洞如tomcat,weblogic,jboss,apache靶场攻略
  • wpf之ContentPresenter
  • 《Java 程序设计》第 14 章 - JavaFX 基础
  • windows服务器 maven 配置环境变量,验证maven环境变量是否配置成功
  • AI在法律合同内容比对的应用实例
  • 使用 Elasticsearch 和 AI 构建智能重复项检测
  • 接口基础-智能家居控制系统
  • 家政小程序系统开发:满足多元家政需求
  • AI 类型的 IDE
  • 直播小程序 app 系统架构分析
  • FastMCP本地构建Server和Clinet交互
  • PyTorch深度学习快速入门学习总结(三)
  • selenium+pyautogui实现页面鼠标自动化控制
  • 学习Python中Selenium模块的基本用法(4:WebDriver常用属性及函数)
  • RabbitMQ的特点和消息可靠性保障
  • RabbitMQ 队列配置设置 RabbitMQ 消息监听器的并发消费者数量java
  • [Linux入门] Linux防火墙技术入门
  • rabbitmq的安装和使用-windows版本
  • 远程仓库地址发生变化
  • RabbitMQ安装与介绍
  • 推客小程序商业模型设计:合规分佣体系×盈利模式×LTV提升策略
  • Cesium 快速入门(七)材质详解
  • 一键打包所有docker镜像的脚本
  • 暑期算法训练.11