第2章:测试环境搭建:Linux服务器基础配置、Docker容器化部署、监控工具安装

大家好,我是你们的性能测试讲师。这一章咱们来聊聊环境搭建。说实话,很多同学觉得这步就是装个软件,没什么技术含量。但我见过太多项目,因为环境配置不一致,导致性能数据对不上,最后排查几天才发现是基础环境的问题。所以,这一章咱们稳扎稳打,把地基打牢。

2.1 Linux服务器基础配置

我个人习惯用 CentOS 7.9 或 Ubuntu 20.04 LTS 作为性能测试服务器。为什么?因为稳定,社区支持好,踩过的坑网上基本都有答案。

2.1.1 系统参数调优

性能测试对系统资源要求高,默认的 Linux 参数往往不够用。你需要调整几个关键点:

  • 文件描述符限制:默认 1024,压测时并发一上来就报 "Too many open files"。我建议直接改成 65535 或更高。
  • 网络参数优化:比如 net.ipv4.tcp_tw_reuse、net.core.somaxconn 这些,能有效减少 TIME_WAIT 状态,提升连接复用率。
  • 内核参数调整:vm.swappiness 建议设为 10,减少内存交换,提升响应速度。

核心配置示例:

# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

# /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.core.somaxconn = 1024
vm.swappiness = 10

我的经验:改完参数记得执行 sysctl -p 生效。我曾经在项目里忘了这一步,结果压测时连接数上不去,排查了半天才发现是参数没生效。嗯,这种低级错误犯一次就够了。

2.1.2 必备工具安装

工欲善其事,必先利其器。我一般会装这些:

  • htop / iotop:实时查看 CPU、内存、磁盘 I/O
  • netstat / ss:网络连接状态排查
  • tcpdump:抓包分析,定位网络延迟
  • git / curl / wget:版本控制和下载工具

2.2 Docker容器化部署

为什么要用 Docker?说白了,就是解决「在我机器上能跑,在你机器上就跑不了」的尴尬。Docker 能保证环境一致性,让我们的性能测试环境可复现、可迁移。

2.2.1 Docker安装与配置

安装很简单,但要注意版本。我建议用 Docker CE 20.10 以上版本,支持更多新特性。

# CentOS 安装
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
systemctl start docker
systemctl enable docker

避坑指南:我曾经在生产环境遇到过 Docker 版本不兼容的问题,导致容器启动失败。所以,建议你在测试环境先验证好版本,再推广到其他机器。

2.2.2 Docker Compose编排

单机部署用 Docker 就够了,但一旦涉及多个服务(比如应用 + 数据库 + 监控),用 Docker Compose 会更方便。你想想看,一个 docker-compose.yml 文件就能定义所有服务,一键启动,多省心。

version: '3.8'
services:
  app:
    image: myapp:latest
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root123

2.3 监控工具安装:Prometheus + Grafana

性能测试没有监控,就像开车没有仪表盘。你根本不知道系统当前的状态,出了问题也只能靠猜。我个人习惯用 Prometheus 采集数据,Grafana 做可视化展示。这套组合拳,业界公认的黄金搭档。

2.3.1 Prometheus部署

Prometheus 是一个时序数据库,专门用来存储监控指标。它的核心是拉取(Pull)模式,定期从目标服务抓取数据。

# 下载并解压
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
tar xvf prometheus-2.45.0.linux-amd64.tar.gz
cd prometheus-2.45.0.linux-amd64

# 启动(默认端口9090)
./prometheus --config.file=prometheus.yml

配置文件 prometheus.yml 里,你需要定义要监控的目标。比如监控本机:

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

注意:这里 localhost:9100 是 Node Exporter 的端口,用来采集系统指标。记得先安装 Node Exporter。

2.3.2 Grafana部署

Grafana 负责把 Prometheus 里的数据变成漂亮的图表。安装同样简单:

# 使用 Docker 部署
docker run -d -p 3000:3000 --name=grafana grafana/grafana:latest

启动后,浏览器访问 http://服务器IP:3000,默认账号密码都是 admin。进去之后,第一步就是添加数据源,选择 Prometheus,填上 Prometheus 的地址(比如 http://localhost:9090)。

2.3.3 配置Node Exporter

Node Exporter 是 Prometheus 的官方组件,用来采集 CPU、内存、磁盘、网络等系统指标。安装方式:

# 下载并启动
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
tar xvf node_exporter-1.6.0.linux-amd64.tar.gz
cd node_exporter-1.6.0.linux-amd64
./node_exporter &

启动后,访问 http://服务器IP:9100/metrics,就能看到一堆指标数据。这就是 Prometheus 要抓取的数据源。

2.4 知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张图。你看一眼,心里就有数了:

性能回归自动化检测 - 测试环境搭建 Linux基础配置 Docker容器化部署 监控工具安装 系统参数调优 必备工具安装 Docker安装与配置 Docker Compose编排 Prometheus部署 Grafana可视化 Node Exporter采集 三者协同:稳定基础 → 环境一致 → 实时监控

2.5 验证环境是否就绪

环境搭好了,怎么知道对不对?我一般会跑一个简单的验证流程:

  1. 检查 Linux 参数是否生效:ulimit -n 看文件描述符,sysctl vm.swappiness 看交换分区设置。
  2. 启动一个测试容器:docker run hello-world,能正常输出就说明 Docker 没问题。
  3. 访问 Prometheus 的 Web 界面(端口 9090),看 Target 状态是不是 UP。
  4. 打开 Grafana(端口 3000),导入一个 Node Exporter 的仪表盘模板,看图表有没有数据。

小技巧:如果 Grafana 图表没数据,别慌。先检查 Prometheus 能不能查到数据,再到 Grafana 的数据源配置里点「Save & Test」。我曾经因为数据源地址写错了,折腾了半小时才发现。

好了,环境搭建就到这里。记住一句话:环境稳了,测试才准。下一章咱们开始写自动化脚本,到时候这些环境就是你的武器库。


想要更多资料,联系可可