3、压测环境搭建:Linux服务器压测环境准备、Python虚拟环境配置、依赖安装

好,咱们进入实战环节。说实话,很多压测翻车,不是工具不行,而是环境没搭好。我见过太多人直接在服务器裸奔装包,结果依赖冲突搞到心态爆炸。今天咱们就把这套流程捋顺,保证你以后搭环境不再踩坑。

核心思路:隔离、干净、可复现。说白了,就是让压测环境跟服务器上其他服务互不干扰,出了问题也能一键重建。

3.1 Linux服务器压测环境准备

先说说服务器选型。我个人习惯用 CentOS 7 或 Ubuntu 20.04 以上的版本。为什么?因为这两个生态最成熟,遇到问题网上随便一搜就有答案。

嗯,这里要注意几个前置条件:

  • 内核参数调优:压测时并发连接数会很高,默认的 ulimit -n 只有 1024,根本不够用。我曾经有一次压测到一半,连接数直接爆了,排查了半天才发现是文件描述符限制。
  • 关闭防火墙和 SELinux:测试环境别给自己找麻烦,这些东西生产环境再开。
  • 时间同步:压测日志的时间戳必须准确,不然分析性能瓶颈时你会疯掉。

我一般会先跑一个检查脚本,把基础环境扫一遍:

# 检查系统版本
cat /etc/os-release

# 调整文件描述符限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

# 关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 安装基础工具
yum install -y wget curl git vim net-tools

注意:千万别在生产服务器上跑这些命令!我当年刚入行时就在线上环境关了防火墙,结果被运维大哥追着骂了三条街。测试环境归测试环境,生产归生产,这个边界要拎清。

3.2 Python虚拟环境配置

为什么要用虚拟环境?你想想看,服务器上可能已经装了 Python 3.6,但压测工具需要 Python 3.9,而且依赖的包版本还不一样。直接装的话,系统自带的工具可能就挂了。

我推荐用 venv,它是 Python 3.3+ 自带的模块,轻量又好用。当然,如果你喜欢 conda 或者 virtualenv 也行,看个人习惯。

具体操作很简单:

# 安装 Python 3.9(如果系统没有)
yum install -y python39 python39-devel

# 创建虚拟环境
python3.9 -m venv /opt/loadtest_env

# 激活虚拟环境
source /opt/loadtest_env/bin/activate

# 验证一下
which python
# 输出应该是 /opt/loadtest_env/bin/python

激活后,你的终端前面会出现 (loadtest_env) 的标识。这时候你安装的所有包,都只会放在这个目录下,不会污染系统环境。

小技巧:我习惯在项目根目录放一个 .env 文件,里面写上虚拟环境的路径。这样团队其他人拉下来代码,直接 source .env 就能激活,不用每次都去翻文档。

3.3 依赖安装

好,环境准备好了,接下来装依赖。压测常用的 Python 库有这些:

库名 用途 版本建议
locust 分布式压测框架 2.15+
requests HTTP 请求库 2.28+
psutil 系统资源监控 5.9+
pandas 结果数据分析 1.5+
matplotlib 图表绘制 3.6+
nvidia-ml-py GPU 显存监控 11.0+

安装命令很简单:

# 确保在虚拟环境中
pip install --upgrade pip

# 批量安装
pip install locust requests psutil pandas matplotlib nvidia-ml-py

# 或者用 requirements.txt
pip install -r requirements.txt

这里有个坑,我必须要说。有一次我在一台新服务器上装 nvidia-ml-py,死活装不上。查了半天才发现,这台机器没装 NVIDIA 驱动。你想想看,没有驱动,你怎么监控显存?

避坑指南:装 nvidia-ml-py 之前,先确认 nvidia-smi 命令能正常输出。如果报错,说明驱动没装好。我曾经在一台云服务器上折腾了俩小时,最后发现是 GPU 虚拟化没开。

装完之后,验证一下:

# 检查 locust 版本
locust --version

# 检查 GPU 监控库
python -c "import pynvml; print('OK')"

# 导出依赖清单(方便其他人复现)
pip freeze > requirements.txt

3.4 知识体系总览

说了这么多,咱们用一张图把整个流程串起来。这样你脑子里就有个全局概念了。

压测环境搭建知识体系 Linux服务器准备 Python虚拟环境 依赖安装 内核参数调优 关闭防火墙/SELinux 时间同步 创建 venv 环境 激活/退出环境 环境隔离管理 locust/requests psutil/nvidia-ml-py pandas/matplotlib 目标:干净、隔离、可复现的压测环境

这张图把咱们今天讲的内容串起来了。从左到右,先搞定服务器基础环境,再搭好 Python 虚拟环境,最后装上压测需要的依赖包。每一步都有坑,但只要你按这个流程走,基本不会出大问题。

我的习惯:每次搭完环境,我都会把 requirements.txt 和 setup.sh 脚本一起提交到 Git 仓库。这样换机器或者加新人,直接拉代码跑脚本,十分钟搞定。别问我为什么这么熟练——当年手动搭了二十多台压测机,搭到想吐。

好了,环境搭好了,下一节咱们就可以真正开始压测了。记住,环境搭得稳,压测才放心。

可可精品资料库