Ubuntu上ThinkPHP项目压力测试指南
在Ubuntu环境下对ThinkPHP项目进行压力测试前,需确保环境与生产环境一致(包括PHP版本、数据库配置、服务器参数等),避免因环境差异导致测试结果偏差。同时,需安装并启用ThinkPHP的性能监控组件(如think-queue、think-log),以便记录请求时间、内存占用等关键指标。
Apache Bench是Linux自带的HTTP服务器性能测试工具,适合快速模拟高并发请求。
安装:Ubuntu默认已安装,若未安装可通过sudo apt install apache2-utils安装。
基础命令:模拟100个并发用户(-c 100)发送1000次请求(-n 1000)到指定接口:
ab -n 1000 -c 100 http://localhost:8000/api/test
带POST数据的测试:若需测试POST接口,需创建包含JSON数据的post_data.txt文件(如{"name":"test","age":20}),并通过-p(数据文件)、-T(Content-Type)参数指定:
ab -n 1000 -c 100 -p post_data.txt -T application/json http://localhost:8000/api/create
保持连接测试:添加-k参数启用HTTP Keep-Alive,模拟持久连接场景:
ab -n 1000 -c 100 -k http://localhost:8000/api/test
结果解读:关注Requests per second(QPS,每秒请求数)、Time per request(平均响应时间)、Failed requests(失败请求数)等指标。
Apache JMeter适合复杂场景(如多接口联动、动态参数、登录态保持),支持生成可视化报告。
安装:下载JMeter,解压后进入bin目录,运行./jmeter启动。
基本步骤:
Test Plan→Add→Threads (Users)→Thread Group,设置线程数(并发用户)、Ramp-Up Period(启动时间)、循环次数。Thread Group→Add→Sampler→HTTP Request,填写服务器名称、端口、路径(如/api/test)。Thread Group→Add→Listener→View Results Tree(查看详细请求)、Summary Report(汇总统计)。Start按钮,执行后通过监听器分析结果。Siege支持模拟多用户并发,适合测试URL列表的性能。
安装:通过sudo apt install siege安装。
基本命令:模拟100个并发用户(-c 100)运行30秒(-t 30s),测试指定URL列表(urls.txt):
siege -c 100 -t 30s -f urls.txt
URL列表示例(urls.txt):
http://localhost:8000/api/test
http://localhost:8000/api/detail?id=1
结果解读:关注Transactions(总请求数)、Availability(可用率)、Response Time(平均响应时间)等指标。
config/app.php中启用app_debug为false(关闭调试模式),并配置app_trace为true(记录请求轨迹),便于定位慢请求。slow_query_log=1),通过EXPLAIN分析SQL语句,添加索引优化高频查询。config/view.php中cache_on=true)、数据库查询缓存(config/database.php中db_cache=true),减少重复计算和数据库访问。pm.max_children(子进程数,建议设置为CPU核心数的2-4倍)、pm.start_servers(启动时的子进程数),避免进程频繁创建销毁。worker_processes(工作进程数,等于CPU核心数)、keepalive_timeout(长连接超时时间,建议设置为65s),提升并发处理能力。top(CPU)、vmstat(内存/磁盘I/O)、netstat(网络)等命令监控系统资源,避免因资源耗尽导致系统崩溃。