导语
玩 Linux 运维,绕不开两大核心技能:服务器性能排查和后台服务管理。
平时线上服务器卡顿、程序后台跑丢、重启后业务起不来,90% 的问题都能用这两套知识解决。
CentOS7 彻底抛弃了老旧 SysV 启动体系,全面采用 systemd 作为系统一号进程,搭配 systemctl 统一管理所有后台程序;同时系统自带一套原生监控工具,再配合 stress 压力测试工具,我们可以手动模拟 CPU、内存、磁盘、网络四类资源瓶颈,直观看懂各项性能指标。
本文全程基于 centos7.lzh.cloud 主机实操,命令完整可复现,从负载解读、压力模拟,到系统自带服务、自定义常驻脚本服务一步步拆解,新手跟着敲就能吃透底层原理,同时整理了实训高频报错与解决思路。
一、系统负载怎么看?四大资源压力模拟实操
日常登录服务器第一件事,先看整体运行状态,uptime、top 是运维人手必备工具。
1.1 uptime & top 快速查看整机负载
登录终端直接输入两条命令,就能拿到服务器全局资源概况:
[lizihan@centos7 ~ 08:49:41]$uptime09:24:09 up39min,3users, load average:0.00,0.05,0.01[lizihan@centos7 ~10:08:53]$toptop-10:08:53 up1:24,3users, load average:0.05,0.03,0.05Tasks:221total,2running,219sleeping,0stopped,0zombie %Cpu(s):0.0us,0.0sy,0.0ni,100.0 id,0.0wa,0.0hi,0.0si KiB Mem:4026116total,1843308free,859488used,1323320buff/cache KiB Swap:4063228total,4063228free,0used.2907200avail Mem指标通俗解读
uptime
up 39 min:服务器开机时长;3 users当前在线登录用户;load average 三段数值:分别代表近 1 分钟、5 分钟、15 分钟系统平均负载。
本机是 2 核虚拟机,负载数值持续大于 2,就代表 CPU 任务排队、系统过载。top 面板
%Cpu id:CPU 空闲占比,100 id 说明完全无压力;wa数值高代表磁盘 IO 阻塞;Mem区域:重点看available,这是系统真正剩余可用内存;Swap 交换分区:线上环境尽量保持 0 占用,频繁使用 swap 代表内存不足。
当前输出是空载状态,适合后续做压力对比测试。
1.2 安装压测与 IO 监控工具
想要人为制造服务器高负载,需要安装 stress;排查磁盘读写占用需要 iotop:
[lizihan@centos7 ~10:09:39]$sudoyuminstall-ystress[lizihan@centos7 ~10:21:35]$sudoyuminstall-yiotop小提示:iotop 需要读取内核底层 IO 数据,普通用户直接运行会报权限不足,必须搭配 sudo 使用。
1.3 四类资源压力模拟实操
① CPU 压力测试
命令-c用来创建 CPU 计算进程,本机 2 核直接开 2 个进程打满:
[root@centos7 ~10:31:09]# stress -c 2新开终端执行 top 观察变化,可以看到其中一颗 CPU 空闲率暴跌,load average 持续走高,stress 进程 CPU 占用接近 100%。
实操结论:多核机器判断 CPU 瓶颈,直接对比负载数值与 CPU 核心数量即可。
② 内存压力测试
使用free -m以 MB 单位查看内存,先记录基准数据,再占用 1G 内存测试:
# 查看原始内存free-m# 单进程占用1G内存stress-m1--vm-bytes 1G按下Ctrl+C终止压测进程后,Linux 内核会自动回收全部占用内存,无需手动清理,只有程序异常崩溃才会出现内存泄漏问题。
③ 磁盘 IO 压力测试
通过-d参数疯狂读写磁盘文件,配合 sar 实时查看磁盘利用率:
stress-d1--hdd-bytes 2G# 每秒刷新一次磁盘指标sar-dp1输出里%util是核心指标,数值越接近 100%,磁盘读写越拥堵。本次测试磁盘利用率达到 81.6%,已经处于高负载状态。
④ 网络带宽压力测试
下载大镜像文件模拟大量用户访问,用 sar 监控网卡流量:
wgethttp://192.168.50.200/course-materials/iso/CentOS-7-x86_64-DVD-2207-02.iso# 实时监控网卡收发流量sudosar-nDEV1下载过程中 ens33 网卡rxkB/s接收流量会暴涨,直观看到带宽占用情况。
二、CentOS7 systemd 服务全解析,从零管理后台程序
2.1 什么是 systemd?
CentOS7 开机后第一个启动的进程 PID=1 就是 systemd,相当于服务器的 “大总管”。
系统所有后台程序(ssh、网页服务、自定义脚本)都由它统一调度、监控、管理,我们操作它的工具就是systemctl。
服务配置文件分为两个存放目录,优先级有区分:
/usr/lib/systemd/system/:系统自带服务(sshd、httpd),系统更新会覆盖;/etc/systemd/system/:管理员自定义服务,不会被系统升级修改,优先级更高。
2.2 系统自带服务实操:httpd + sshd
1)安装并启动 Apache 网页服务 httpd
yuminstall-yhttpd systemctl start httpd# 树形查看网页服务父子进程psaxf|tail执行后能看到多个 httpd 子进程,后台常驻等待用户网页访问。
2)批量查看系统所有服务
日常排查故障常用几条查看命令,收藏备用:
# 查看当前正在运行的单元systemctl list-units# 只查看定时任务类单元systemctl list-units-ttimer# 展示全部服务(包含已停止)systemctl list-units--typeservice--all# 查看所有服务配置文件systemctl list-unit-files# 一键筛选启动失败的服务systemctl--failed--typeservice3)sshd 远程服务踩坑实录
ssh 是远程连接服务器必备服务,这里分享两个新手高频坑:
# 启动ssh服务systemctl start sshd.service# 使用主机名连接直接报错sshlizihan@centos7hostname# 切换IP连接正常sshlizihan@10.1.8.10# 关闭开机自启systemctl disable sshd问题原因:本机/etc/hosts没有配置 centos7 主机名与 IP 的映射,系统无法解析域名;
另外disable只会取消开机自启,不会立刻停止当前运行的 ssh,但服务器重启后 ssh 不会自动拉起,会导致无法远程登录。
2.3 高阶实操:自定义 systemd 常驻服务
很多时候我们需要自己写脚本后台持续运行,传统 nohup 容易丢进程,注册成 systemd 服务是最优解。
需求:编写脚本,每 5 秒输出当前时间写入日志,开机自动后台运行。
步骤 1:编写业务脚本
vim/usr/local/bin/study脚本内容:
#!/bin/bashwhiletruedoDATE=$(date)echo"$DATE: I'M studying [ Linux ]">>/var/log/study.logsleep5done赋予执行权限:
chmod+x /usr/local/bin/study步骤 2:复制 ssh 服务模板创建自定义服务文件
不用从零手写配置,直接复用系统 sshd 模板,减少语法错误:
cp/usr/lib/systemd/system/sshd.service /etc/systemd/system/studyd.servicevim/etc/systemd/system/studyd.service精简修改配置:
[Unit] Description=study server daemon [Service] ExecStart=/usr/local/bin/study [Install] WantedBy=multi-user.target步骤 3:重载配置并启动服务
修改服务文件后,必须重载 systemd 缓存才能生效:
systemctl daemon-reload# 开机自启+立即启动一步到位systemctlenablestudyd--now# 查看运行状态systemctl status studyd输出active (running)代表脚本已经在后台稳定运行。
步骤 4:日志查看小坑
刚启动立刻执行日志查看会提示文件不存在:
tail-f/var/log/study.log原因:系统只有执行写入操作时,才会自动创建日志空文件,等待几秒或重启服务就能正常输出日志。
三、实训高频问题汇总,新手直接避坑
iotop 普通用户运行报错
iotop 依赖内核 IO 接口,权限受限,执行时加上 sudo 即可;ssh 主机名解析失败
本机 hosts 无 IP 映射,要么编辑 hosts 绑定主机名,要么直接使用 IP 登录;复制 sshd 模板后,服务描述还是 OpenSSH
忘记修改配置里Description字段,改完 daemon-reload 重启服务刷新;修改.service 文件后配置不生效
systemd 会缓存配置,修改单元文件必须执行daemon-reload;服务器重启后 ssh 自动关闭
执行过systemctl disable sshd,使用 enable 恢复开机自启;tail 查看日志提示无此文件
脚本没有主动创建文件逻辑,首次写入时系统自动生成日志。
四、文末核心知识点总结
性能监控体系
stress 覆盖 CPU / 内存 / 磁盘 / 网络四类压力;uptime、top、free、sar 配套定位系统瓶颈;2 核服务器负载超过 2 代表 CPU 过载。systemd 服务管理
systemctl 统一管控启停、重载、开机自启;区分 disable(仅取消自启)和 mask(彻底禁用,无法手动启动)。自定义服务标准流程
编写常驻脚本 → 复制系统服务模板修改 → daemon-reload 重载配置 → enable --now 一键启动并开机自启。生产环境优势
注册为 systemd 托管的进程,断开 SSH 终端不会被杀死,自带崩溃重启、开机自启能力,稳定性远超 screen、nohup。