性能测试中需要关注Linux服务器哪些数据?
在进行 Linux 服务器的性能测试时,需要关注多个关键指标以确保系统能够高效、稳定地运行。以下是一些常见的性能测试指标及其重要性:
1. CPU 使用率
用户时间 (User Time): 应用程序实际使用 CPU 的时间。
系统时间 (System Time): 内核和系统调用使用 CPU 的时间。
空闲时间 (Idle Time): CPU 空闲的时间。
等待 I/O 时间 (I/O Wait Time): CPU 等待 I/O 操作完成的时间。
2. 内存使用情况
总内存 (Total Memory): 系统总的物理内存。
已用内存 (Used Memory): 当前正在使用的内存。
可用内存 (Available Memory): 可供新进程使用的内存。
缓存 (Cache): 用于文件系统的缓存。
缓冲区 (Buffers): 用于块设备 I/O 的缓冲区。
交换空间 (Swap Space): 用于虚拟内存的磁盘空间。
交换使用 (Swap Usage): 当前正在使用的交换空间。
3. 磁盘 I/O
读取速率 (Read Rate): 每秒从磁盘读取的数据量。
写入速率 (Write Rate): 每秒写入磁盘的数据量。
IOPS (Input/Output Operations Per Second): 每秒的 I/O 操作次数。
等待队列长度 (Average Queue Length): 平均等待 I/O 操作的请求数。
4. 网络带宽
发送速率 (Send Rate): 每秒发送的数据量。
接收速率 (Receive Rate): 每秒接收的数据量。
网络错误 (Network Errors): 网络传输中的错误数。
丢包率 (Packet Loss): 数据包丢失的比例。
5. 进程信息
进程数 (Number of Processes): 系统中运行的进程数量。
僵尸进程 (Zombie Processes): 已经终止但其父进程尚未回收其资源的进程。
负载平均值 (Load Average): 过去 1 分钟、5 分钟和 15 分钟内的系统负载平均值。
6. 文件系统
挂载点 (Mount Points): 文件系统的挂载点。
使用率 (Usage): 每个挂载点的使用百分比。
剩余空间 (Free Space): 每个挂载点的剩余空间。
7. 系统日志
系统日志 (System Logs): 如 /var/log 目录下的日志文件,记录系统事件和错误信息。
8. 系统启动时间和响应时间
启动时间 (Boot Time): 系统启动所需的时间。
响应时间 (Response Time): 系统对请求的响应时间。
9. 上下文切换 (Context Switches)
上下文切换次数 (Context Switches): 每秒发生的上下文切换次数。
10. 中断 (Interrupts)
中断次数 (Interrupts): 每秒处理的硬件中断次数。
性能测试工具
为了收集这些数据,可以使用多种工具,包括但不限于:
top, htop: 实时查看系统资源使用情况。
vmstat, iostat, mpstat: 统计系统性能数据。
dstat: 多合一系统资源统计工具。
sar (System Activity Reporter): 收集、报告和保存系统活动信息。
nmon (Nigel's Monitor): 实时监控系统性能。
netstat, ss, iptraf, iftop: 网络流量监控。
tcpdump, Wireshark: 网络抓包分析。
iotop, iostat: 磁盘 I/O 监控。
sysdig, strace, ltrace: 系统调用跟踪。
示例命令
以下是一些常用的命令示例,可以帮助你获取上述指标:
# 查看 CPU 使用情况
top -b -n 1 | grep "Cpu(s)"
# 查看内存使用情况
free -h
# 查看磁盘 I/O
iostat -x 1 1
# 查看网络带宽
ifstat 1 1
# 查看进程信息
ps aux --sort=-%cpu
# 查看文件系统使用情况
df -h
# 查看系统日志
tail -f /var/log/syslog
# 查看上下文切换和中断
vmstat 1 1
以下代码作为辅助,大家如果有兴趣写平台的话,可以用到
python 每1秒获取一次mac电脑的cup、内存、磁盘,并每分钟记录一次数据到指定excel文件中
import psutil
import time
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
# 初始化 Excel 工作簿
wb = Workbook()
ws = wb.active
ws.title = "System Monitor"
ws.append(["Timestamp", "CPU (%)", "Memory (%)", "Disk (%)"])
# 记录数据的时间间隔(秒)
record_interval = 60
data_points = []
def get_system_info():
# 获取 CPU 使用率
cpu_percent = psutil.cpu_percent(interval=1)
# 获取内存使用情况
memory_info = psutil.virtual_memory()
memory_percent = memory_info.percent
# 获取磁盘使用情况
disk_info = psutil.disk_usage('/')
disk_percent = disk_info.percent
return cpu_percent, memory_percent, disk_percent
def record_data_to_excel(data_points):
for data_point in data_points:
ws.append(data_point)
# 计算平均值
if data_points:
avg_cpu = sum(point[1] for point in data_points) / len(data_points)
avg_memory = sum(point[2] for point in data_points) / len(data_points)
avg_disk = sum(point[3] for point in data_points) / len(data_points)
# 将平均值写入 Excel
ws.append(["Average", avg_cpu, avg_memory, avg_disk])
# 保存 Excel 文件
wb.save("system_monitor.xlsx")
try:
while True:
# 获取当前时间戳
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
# 获取系统信息
cpu_percent, memory_percent, disk_percent = get_system_info()
# 打印当前系统信息
print(f"Timestamp: {timestamp}, CPU: {cpu_percent}%, Memory: {memory_percent}%, Disk: {disk_percent}%")
# 将数据点添加到列表中
data_points.append([timestamp, cpu_percent, memory_percent, disk_percent])
# 每分钟记录一次数据到 Excel 文件
if len(data_points) >= record_interval:
record_data_to_excel(data_points)
data_points = [] # 清空数据点列表
# 等待 1 秒
time.sleep(1)
except KeyboardInterrupt:
# 如果用户中断程序(例如按 Ctrl+C),保存剩余的数据点
if data_points:
record_data_to_excel(data_points)
print("Monitoring stopped. Data saved to system_monitor.xlsx")
代码说明
初始化 Excel 工作簿:
创建一个新的 Excel 工作簿,并设置工作表名称为 "System Monitor"。
在第一行添加列标题。
定义 get_system_info 函数:
使用 psutil 库获取 CPU 使用率、内存使用率和磁盘使用率。
定义 record_data_to_excel 函数:
将数据点列表中的数据写入 Excel 文件。
计算 CPU、内存和磁盘使用率的平均值,并将这些平均值写入 Excel 文件。
保存 Excel 文件。
主循环:
每秒获取一次系统信息并打印。
将获取的数据添加到 data_points 列表中。
当 data_points 列表中的数据点数量达到 60 个时(即每分钟),调用 record_data_to_excel 函数将数据写入 Excel 文件,并清空 data_points 列表。
使用 time.sleep(1) 使程序暂停 1 秒,以实现每秒获取一次数据。
异常处理:
如果用户通过按 Ctrl+C 中断程序,保存剩余的数据点并退出程序。
运行脚本
将上述代码保存到一个 Python 文件中(例如 system_monitor.py),然后在 Linux 终端中运行它:
python3 system_monitor.py
这将开始每秒获取一次系统信息,并每分钟将数据记录到 system_monitor.xlsx 文件中。每分钟结束时,还会计算并记录 CPU、内存和磁盘使用率的平均值。如果需要停止监控,可以按 Ctrl+C。
请确保你有适当的权限来执行脚本,并且安装了所有必需的库。如果遇到任何问题,请告诉我!