在进行服务器性能测试之前,必须确保服务器端和压测端已安装必要的工具。本指南以CentOS 7/8系统为例,压测工具选用轻量级且准确的wrk,监控工具选用sysstat。
在压测端机器(建议与被测服务器在同一内网,避免网络波动干扰)执行以下命令安装依赖并编译wrk:
yum install -y git gcc make
git clone https://github.com/wg/wrk.git
cd wrk
make
cp wrk /usr/local/bin/
安装完成后,输入wrk,若显示版本信息则表示安装成功。
在被测服务器上执行以下命令,用于监控CPU、内存、IO及网络上下文切换情况:
yum install -y sysstat
压测的核心目的是模拟高并发场景,获取系统的吞吐量(QPS)、响应时间(Latency)及错误率。
假设被测服务器IP为192.168.1.100,端口为80。我们使用12个线程,建立400个并发连接,持续压测30秒。执行以下命令:
wrk -t12 -c400 -d30s http://192.168.1.100/
命令执行后会输出以下关键指标,重点关注Requests/sec和Latency:
在压测进行的同时,需要在服务器端开启监控窗口,实时查看系统资源消耗情况。
执行命令vmstat 1 5(每秒刷新一次,共5次)。重点关注以下列:
执行命令iostat -x 1 5。重点关注%util:
执行命令ss -s查看总连接数。执行以下命令查看TCP连接状态分布:
ss -ant | awk 'NR>1 {print $1}' | sort | uniq -c
如果TIME_WAIT数量过多(超过几万),说明端口占用未及时回收,会导致“Cannot assign requested address”错误。如果SYN_RECV过多,可能遭受SYN Flood攻击或全连接队列溢出。

针对高并发场景,默认的Linux内核参数过于保守。修改配置文件/etc/sysctl.conf,在文件末尾添加以下完整配置:
1. 增加系统文件描述符限制(全局)
fs.file-max = 1000000
2. 允许系统打开的端口范围
net.ipv4.ip_local_port_range = 10000 65000
3. 优化TCP连接队列,防止全连接队列溢出导致丢包
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
4. 加快TCP连接回收,减少TIME_WAIT占用
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
5. TCP Keepalive保活机制设置
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
6. 增加读写缓冲区大小,提升高吞吐下的网络性能
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
7. 优化网络设备接收队列,防止网卡丢包
net.core.netdev_max_backlog = 30000
8. 关闭swap分区,防止内存不足时系统交换导致性能骤降(视内存情况而定)
vm.swappiness = 10
配置修改完成后,执行以下命令使配置立即生效:
sysctl -p
即使内核参数允许,如果用户进程的文件描述符限制(ulimit)过低,依然会导致“Too many open files”错误。
编辑文件/etc/security/limits.conf,在文件末尾添加:
soft nofile 65535
hard nofile 65535
编辑/etc/systemd/system.conf,取消以下两行的注释并修改数值:
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
修改完成后,重启服务器或重新登录用户,执行ulimit -n验证是否生效,输出应为65535。
服务器优化不仅仅是系统层面,应用层配置同样关键。以Nginx为例,编辑nginx.conf:
user nginx;
worker_processes auto; 自动匹配CPU核心数
worker_rlimit_nofile 65535; 设置worker进程最大打开文件数
events {
use epoll; 使用高效的IO多路复用模型
worker_connections 10240; 每个worker进程允许的最大连接数
multi_accept on; 尽可能多地接受连接
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on; 零拷贝技术,提升文件传输效率
tcp_nopush on;
tcp_nodelay on; 禁用Nagle算法,降低延迟
keepalive_timeout 30; 设置较短的keepalive超时,快速回收连接
开启高效文件传输
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
配置修改后,执行nginx -t检查语法,无误后执行nginx -s reload重载配置。
完成上述所有步骤后,再次执行第二步中的压测命令:
wrk -t12 -c400 -d30s http://192.168.1.100/对比优化前后的数据:
若QPS仍未达标,需检查应用代码逻辑(如是否有数据库锁、慢查询)或考虑垂直/水平扩展硬件资源。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图