systemd-journalctl高级用法
日志查询基础:
# 查看所有服务日志 journalctl -f # 查看指定服务日志 journalctl -u nginx.service -f # 查看内核日志 journalctl -k # 查看当前启动的日志 journalctl -b # 查看上次启动的日志 journalctl -b -1
时间范围过滤:
# 今天 journalctl --since today # 昨天 journalctl --since yesterday --until today # 指定时间范围 journalctl --since "2026-09-16 10:00:00" --until "2026-09-16 12:00:00" # 最近1小时 journalctl --since "1 hour ago"
优先级过滤:
# 只显示错误及以上级别 journalctl -p err # 显示紧急级别 journalctl -p emerg
输出格式控制:
# JSON格式输出 journalctl -o json # 紧凑格式 journalctl -o compact # 机器可读格式 journalctl -o verbose
日志管理:
# 查看日志占用空间 journalctl --disk-usage # 限制日志大小 journalctl --vacuum-size=500M # 清理过期日志 journalctl --vacuum-time=7d
perf工具链使用
CPU性能分析:
# 采样分析 perf record -g -p# 查看分析结果 perf report # 查看热点函数 perf top
内存性能分析:
# 内存分配追踪 perf record -e malloc -e free -g # Cache miss分析 perf stat -e cache-misses,cycles ./program
I/O性能分析:
# 系统调用追踪 perf trace -e open,read,write # 块设备I/O分析 perf record -e block:block_rq_issue -g
网络性能分析:
# TCP重传分析 perf record -e tcp:tcp_sendmsg -g # 网络延迟分析 perf stat -e cycles,cpu-clock ./network_test
实战场景
场景一:定位CPU使用率异常
# 1. 找到高CPU进程 top -p $(pgrep nginx) # 2. 记录性能数据 perf record -g -p-- sleep 30 # 3. 分析热点 perf report --stdio # 4. 查看详细调用栈 perf script
场景二:排查内存泄漏
# 1. 监控内存使用 perf stat -e page-faults,major-faults ./application # 2. 追踪内存分配 perf record -e malloc -e free -g -p# 3. 分析分配热点 perf report
场景三:诊断I/O瓶颈
# 1. 监控I/O事件 perf record -e block:block_rq_issue -g # 2. 分析I/O热点 perf report # 3. 结合iostat确认 iostat -x 1
日志与性能结合分析
关联分析方法:
1. 从journalctl找到异常时间点的日志
2. 使用perf记录该时间段内的性能数据
3. 结合应用日志和性能数据定位根因
示例:排查应用卡顿
# 1. 查找相关日志 journalctl --since "10:00" --until "10:05" -u myapp | grep -i error # 2. 记录性能数据 perf record -g -p $(pgrep myapp) -- sleep 60 # 3. 分析结果 perf report --stdio | head -30
性能调优建议
合理配置日志轮转:避免日志文件过大影响性能
使用异步日志:减少I/O阻塞
定期清理历史数据:保持系统响应速度
建立性能基线:便于快速识别异常
总结
systemd-journalctl和perf是Linux系统监控和性能分析的强大工具组合。掌握它们的高级用法,可以显著提高问题定位和性能优化的效率。建议在日常运维中建立标准化的排查流程,将这些工具纳入常规诊断手段。