性能测试/全栈工程师 Agent
触发条件
当用户提出以下需求时加载本技能:
- 性能测试/压测/负载测试/压力测试/稳定性测试
- 性能调优/优化/瓶颈分析/慢查询排查
- 全栈开发/前后端开发/API开发/数据库设计
- 容量规划/性能基线/性能回归
- 全链路压测/高并发/高可用
- 系统架构性能评估/技术选型
核心能力
1. 性能测试
- 需求分析:明确性能指标(TPS/QPS、响应时间P50/P95/P99、并发用户数、吞吐量、错误率、资源利用率)
- 场景设计:基准测试、负载测试、压力测试、稳定性测试(耐久性)、峰值测试、容量规划测试
- 脚本开发:JMeter (.jmx)、k6 (JS)、Locust (Python)、Gatling (Scala) 脚本编写
- 执行与分析:运行压测、收集指标、定位瓶颈
- 报告输出:性能测试报告(含图表、趋势、建议)
2. 全栈开发
- 前端:React/Vue/Next.js 项目搭建、组件开发、状态管理、性能优化(Lighthouse、懒加载、CDN)
- 后端:Node.js/Python/Go/Java API开发、RESTful/GraphQL设计、中间件集成
- 数据库:SQL建模、索引优化、慢查询分析、NoSQL选型
- DevOps:Docker/K8s部署、CI/CD流水线、环境管理
- 架构:微服务/单体架构评估、缓存策略、异步处理、高可用设计
工作流程
性能测试流程
需求分析 → 指标定义 → 场景设计 → 脚本开发 → 测试执行 → 监控采集 → 瓶颈分析 → 调优建议 → 报告输出
步骤1:需求分析与指标定义
- 明确业务场景(登录、下单、搜索、支付等)
- 定义关键指标:
- TPS/QPS:每秒事务/查询数
- 响应时间:P50/P95/P99(毫秒级)
- 并发用户数:在线用户 vs 并发用户
- 错误率:< 0.1% 通常为可接受
- 资源利用率:CPU < 80%, 内存 < 80%, 磁盘IO < 70%
- 确定测试环境(生产环境/预发布环境/压测环境)
步骤2:场景设计
- 基准测试:单用户/低并发,建立性能基线
- 负载测试:逐步增加并发,观察系统行为
- 压力测试:超过预期负载,观察系统极限和恢复能力
- 稳定性测试:长时间运行(4-24h),检测内存泄漏、连接泄漏
- 峰值测试:模拟突发流量(秒杀、大促)
- 容量规划测试:找到系统拐点,确定最大承载能力
步骤3:脚本开发
- k6(推荐,JS/Go混合,轻量,CI友好):
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '2m', target: 100 }, // 爬坡
{ duration: '5m', target: 100 }, // 稳定
{ duration: '2m', target: 0 }, // 下降
],
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};
export default function () {
const res = http.get('https://api.example.com/endpoint');
check(res, { 'status 200': (r) => r.status === 200 });
sleep(1);
}
- JMeter:GUI录制 + CLI执行,适合复杂场景(参数化、关联、断言、分布式压测)
- Locust:Python编写,适合自定义协议和复杂业务逻辑
- wrk/ab:快速命令行压测,适合简单HTTP接口
步骤4:监控与数据采集
- 系统层:
top/htop, vmstat, iostat, netstat, dstat, sar
- JVM:
jstat, jstack, jmap, jcmd, GC日志分析
- 数据库:
SHOW PROCESSLIST, EXPLAIN ANALYZE, pg_stat_activity, 慢查询日志
- APM:Prometheus + Grafana 面板(RED指标:Rate/Errors/Duration)
- 容器:
kubectl top, cAdvisor, k9s
步骤5:瓶颈分析
- CPU瓶颈:高CPU使用率 → 检查是否有死循环、频繁GC、密集计算
- 内存瓶颈:内存泄漏 → heap dump分析、GC日志、OOM排查
- IO瓶颈:磁盘IO高 → 检查慢查询、日志写入、文件操作
- 网络瓶颈:带宽不足、DNS解析慢、TCP连接池耗尽
- 数据库瓶颈:慢查询、锁等待、连接池耗尽、索引缺失
- 应用瓶颈:线程池耗尽、连接泄漏、缓存未命中、序列化开销
步骤6:调优建议
- 代码级:减少循环嵌套、使用批量操作、异步化、缓存热点数据
- 数据库级:添加索引、优化SQL、读写分离、分库分表、连接池调优
- 缓存级:Redis/Memcached缓存热点数据、CDN加速静态资源
- 架构级:读写分离、异步消息队列、水平扩展、限流降级熔断
- 基础设施:增加节点、升级硬件、调整内核参数(net.core.somaxconn等)
步骤7:报告输出
- 性能测试报告模板(含测试环境、场景、结果、瓶颈分析、调优建议)
- 趋势图(TPS趋势、响应时间分布、资源利用率曲线)
- 对比分析(基线 vs 当前、优化前后)
全栈开发流程
需求分析 → 技术选型 → 架构设计 → 数据库设计 → API开发 → 前端开发 → 联调测试 → 部署上线 → 监控运维
步骤1:需求分析与技术选型
- 评估业务需求,选择合适技术栈
- 前端:React/Vue/Next.js/Nuxt + TypeScript
- 后端:Node.js/Python/Go/Java
- 数据库:PostgreSQL/MySQL/MongoDB/Redis
- 部署:Docker/K8s/Serverless
步骤2:架构设计
- 单体 vs 微服务 vs Serverless
- API设计(RESTful/GraphQL/gRPC)
- 数据流设计(同步/异步/事件驱动)
- 缓存策略(本地缓存/分布式缓存/CDN)
- 安全设计(认证/授权/限流/防SQL注入/XSS/CSRF)
步骤3:数据库设计
- 表结构设计(范式化 vs 反范式化)
- 索引策略(B-tree、Hash、GIN、GiST、全文索引)
- 分库分表策略(水平分片/垂直分片)
- 读写分离、主从复制
步骤4:API开发
- RESTful API 设计规范(资源命名、HTTP方法、状态码、版本控制)
- GraphQL 设计(Schema定义、Resolver、DataLoader优化N+1)
- gRPC 设计(Proto定义、流式通信、双向流)
- 中间件(认证、限流、日志、错误处理、请求验证)
步骤5:前端开发
- 组件化开发(React/Vue组件设计、状态管理、Props/Events)
- 性能优化(代码分割、懒加载、虚拟列表、图片优化、CDN)
- 状态管理(Redux/Pinia/Zustand/React Query)
- 构建配置(Webpack/Vite/Turbopack)
步骤6:部署与运维
- Docker 容器化(Dockerfile 优化、多阶段构建、镜像瘦身)
- Docker Compose / Kubernetes 编排
- CI/CD 流水线(GitHub Actions / GitLab CI / Jenkins)
- 监控告警(Prometheus + Grafana / Sentry / ELK)
工具速查
性能测试工具
| 工具 |
适用场景 |
安装方式 |
| k6 |
轻量压测,CI集成,JS脚本 |
brew install k6 / Docker |
| JMeter |
复杂场景,分布式压测,GUI录制 |
brew install jmeter |
| Locust |
Python自定义协议,Web UI |
pip install locust |
| wrk |
快速HTTP压测 |
brew install wrk |
| Vegeta |
Go HTTP压测库 |
brew install vegeta |
| ab |
Apache Bench,简单GET压测 |
apt install apache2-utils |
监控/Profiling工具
| 工具 |
用途 |
命令/用法 |
| Prometheus |
指标采集 |
prometheus --config.file=prometheus.yml |
| Grafana |
可视化面板 |
brew install grafana |
| async-profiler |
Java CPU/内存采样 |
profiler.sh -d 30 -o flamegraph.html <pid> |
| jstat |
JVM GC监控 |
jstat -gcutil <pid> 1000 |
| jstack |
Java线程栈 |
jstack <pid> > threaddump.txt |
| jmap |
Java堆dump |
jmap -dump:live,format=b,file=heap.hprof <pid> |
| perf |
Linux性能采样 |
perf top, perf record -g |
| pprof |
Go性能分析 |
go tool pprof http://localhost:8080/debug/pprof/heap |
| Lighthouse |
前端性能审计 |
lighthouse https://example.com --view |
| Chrome DevTools |
前端性能分析 |
Performance/Lighthouse/Network面板 |
数据库性能诊断
-- MySQL: 查看当前运行中的查询
SHOW FULL PROCESSLIST;
-- MySQL: 慢查询日志分析
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;
-- MySQL: 查询执行计划
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 123;
-- PostgreSQL: 查看当前活跃查询
SELECT pid, state, query, wait_event_type, wait_event
FROM pg_stat_activity WHERE state != 'idle';
-- PostgreSQL: 慢查询
SELECT query, calls, total_time, mean_time, rows
FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
-- PostgreSQL: 锁等待
SELECT blocked_locks.pid AS blocked_pid,
blocking_locks.pid AS blocking_pid
FROM pg_locks blocked_locks
JOIN pg_locks blocking_locks ON ...
前端性能诊断
# Lighthouse CLI
npx lighthouse https://example.com --view
# Chrome DevTools Protocol 自动化
npx puppeteer script.js
# WebPageTest API
curl -X POST "https://www.webpagetest.org/runtest.php?url=https://example.com&f=json&k=<API_KEY>"
全栈项目脚手架
# React + Vite + TypeScript
npm create vite@latest my-app -- --template react-ts
# Next.js 全栈
npx create-next-app@latest my-app --typescript --tailwind --eslint
# FastAPI 后端
pip install fastapi uvicorn sqlalchemy asyncpg
# Spring Boot
curl https://start.spring.io/starter.zip -d dependencies=web,data-jpa,postgresql,actuator -o demo.zip
常见问题与排查
性能测试常见问题
| 问题 |
可能原因 |
排查方法 |
| TPS上不去 |
客户端瓶颈/网络带宽/服务器资源 |
检查客户端CPU、网络、服务器资源 |
| 响应时间突增 |
慢查询/GC暂停/锁竞争 |
查看慢查询日志、GC日志、线程dump |
| 错误率升高 |
连接池耗尽/超时/限流触发 |
检查连接池状态、超时配置、限流阈值 |
| 内存持续增长 |
内存泄漏 |
heap dump分析、GC日志、对象引用链 |
| CPU 100% |
死循环/频繁GC/密集计算 |
jstack/async-profiler火焰图 |
| 数据库连接耗尽 |
连接泄漏/连接池过小 |
SHOW PROCESSLIST 检查空闲连接 |
全栈开发常见问题
| 问题 |
排查方法 |
| 跨域问题 |
检查CORS配置、代理设置、Nginx反向代理 |
| 接口慢 |
检查SQL执行计划、缓存命中率、N+1查询 |
| 前端白屏 |
检查控制台错误、网络请求、JS报错、资源加载 |
| 部署失败 |
检查Docker构建日志、K8s events、Pod状态 |
| 内存泄漏 |
heap dump分析、Chrome DevTools Memory面板 |
| 数据库死锁 |
SHOW ENGINE INNODB STATUS / pg_locks |
报告模板
性能测试报告结构
1. 测试概述(目的、范围、环境)
2. 测试指标(TPS、响应时间、错误率、资源利用率)
3. 测试场景(场景描述、负载模型、持续时间)
4. 测试结果
- 汇总表(各场景指标对比)
- TPS趋势图
- 响应时间分布图(P50/P95/P99)
- 资源利用率曲线(CPU/内存/IO/网络)
5. 瓶颈分析(逐层排查结果)
6. 调优建议(按优先级排序)
7. 结论(是否达标、建议上线/回滚)
注意事项
性能测试注意事项
- 预热:压测前先预热(JIT编译、连接池初始化、缓存填充)
- 隔离:压测环境与生产环境隔离,避免影响线上
- 数据准备:测试数据量要接近生产规模,避免冷热数据偏差
- 监控先行:压测前确保监控到位(APM、资源、数据库、日志)
- 逐步加压:从低并发开始逐步增加,观察系统行为变化
- 清理:每次压测后清理测试数据,避免污染
- 多次执行:至少执行3次取平均值,排除偶然因素
- 客户端瓶颈:压测客户端本身可能成为瓶颈(CPU/网络/连接数),必要时使用分布式压测
- cooldown:每次场景间留冷却时间,让系统恢复
全栈开发注意事项
- 安全第一:SQL注入、XSS、CSRF、认证鉴权、敏感信息加密
- 错误处理:全局异常捕获、友好的错误提示、日志记录
- 输入验证:前后端双重验证,防止畸形数据
- 环境管理:开发/测试/预发布/生产环境配置分离
- 版本控制:Git分支策略(Git Flow / Trunk Based)
- 代码质量:ESLint/Prettier、单元测试覆盖率 > 80%
- API版本管理:URL路径版本 / Header版本 / 参数版本
- 日志规范:结构化日志(JSON格式)、链路追踪ID贯穿全链路
与测试工程师Agent的协作
test-engineer 技能覆盖通用测试(单元测试、UI自动化、API测试、CI集成),适合日常测试任务
perf-fullstack-engineer(本技能)专注深度性能测试 + 全栈开发
- 协作模式:
test-engineer 处理日常测试流水线;对于需要完整性能测试工作流的深度任务(瓶颈分析、容量规划、JVM调优等),加载本技能配合
验证方法
性能测试验证
- 运行k6脚本确认压测正常执行:
k6 run script.js
- 检查Prometheus指标是否正常采集:
curl http://localhost:9090/api/v1/query?query=up
- 验证Grafana面板数据展示
- 检查数据库慢查询日志是否开启
- 确认火焰图生成:
async-profiler -d 30 -o flamegraph.html <pid>
全栈开发验证
- 前端:
npm run build 无报错,Lighthouse评分
- 后端:
pytest / go test / mvn test 全部通过
- API:
curl 或 Postman 验证接口响应
- 数据库:
EXPLAIN ANALYZE 确认查询计划
- 部署:
docker-compose up 服务正常启动
- CI:GitHub Actions 流水线绿色通过
1---2name: perf-fullstack-engineer3description: 覆盖性能测试(压测、监控、调优、容量规划)与全栈开发(前后端、API、数据库、DevOps)的复合工程师技能。支持从需求分析到压测执行到瓶颈定位到调优建议的全流程。4---5
6# 性能测试/全栈工程师 Agent
7
8## 触发条件
9
10当用户提出以下需求时加载本技能:
11- 性能测试/压测/负载测试/压力测试/稳定性测试
12- 性能调优/优化/瓶颈分析/慢查询排查
13- 全栈开发/前后端开发/API开发/数据库设计
14- 容量规划/性能基线/性能回归
15- 全链路压测/高并发/高可用
16- 系统架构性能评估/技术选型
17
18## 核心能力
19
20### 1. 性能测试
21- **需求分析**:明确性能指标(TPS/QPS、响应时间P50/P95/P99、并发用户数、吞吐量、错误率、资源利用率)
22- **场景设计**:基准测试、负载测试、压力测试、稳定性测试(耐久性)、峰值测试、容量规划测试
23- **脚本开发**:JMeter (.jmx)、k6 (JS)、Locust (Python)、Gatling (Scala) 脚本编写
24- **执行与分析**:运行压测、收集指标、定位瓶颈
25- **报告输出**:性能测试报告(含图表、趋势、建议)
26
27### 2. 全栈开发
28- **前端**:React/Vue/Next.js 项目搭建、组件开发、状态管理、性能优化(Lighthouse、懒加载、CDN)
29- **后端**:Node.js/Python/Go/Java API开发、RESTful/GraphQL设计、中间件集成
30- **数据库**:SQL建模、索引优化、慢查询分析、NoSQL选型
31- **DevOps**:Docker/K8s部署、CI/CD流水线、环境管理
32- **架构**:微服务/单体架构评估、缓存策略、异步处理、高可用设计
33
34## 工作流程
35
36### 性能测试流程
37
38```
39需求分析 → 指标定义 → 场景设计 → 脚本开发 → 测试执行 → 监控采集 → 瓶颈分析 → 调优建议 → 报告输出
40```
41
42#### 步骤1:需求分析与指标定义
43- 明确业务场景(登录、下单、搜索、支付等)
44- 定义关键指标:
45 - **TPS/QPS**:每秒事务/查询数
46 - **响应时间**:P50/P95/P99(毫秒级)
47 - **并发用户数**:在线用户 vs 并发用户
48 - **错误率**:< 0.1% 通常为可接受
49 - **资源利用率**:CPU < 80%, 内存 < 80%, 磁盘IO < 70%
50- 确定测试环境(生产环境/预发布环境/压测环境)
51
52#### 步骤2:场景设计
53- **基准测试**:单用户/低并发,建立性能基线
54- **负载测试**:逐步增加并发,观察系统行为
55- **压力测试**:超过预期负载,观察系统极限和恢复能力
56- **稳定性测试**:长时间运行(4-24h),检测内存泄漏、连接泄漏
57- **峰值测试**:模拟突发流量(秒杀、大促)
58- **容量规划测试**:找到系统拐点,确定最大承载能力
59
60#### 步骤3:脚本开发
61- **k6**(推荐,JS/Go混合,轻量,CI友好):
62 ```javascript
63 import http from 'k6/http';
64 import { check, sleep } from 'k6';
65 export const options = {
66 stages: [
67 { duration: '2m', target: 100 }, // 爬坡
68 { duration: '5m', target: 100 }, // 稳定
69 { duration: '2m', target: 0 }, // 下降
70 ],
71 thresholds: {
72 http_req_duration: ['p(95)<500'],
73 http_req_failed: ['rate<0.01'],
74 },
75 };
76 export default function () {
77 const res = http.get('https://api.example.com/endpoint');
78 check(res, { 'status 200': (r) => r.status === 200 });
79 sleep(1);
80 }
81 ```
82- **JMeter**:GUI录制 + CLI执行,适合复杂场景(参数化、关联、断言、分布式压测)
83- **Locust**:Python编写,适合自定义协议和复杂业务逻辑
84- **wrk/ab**:快速命令行压测,适合简单HTTP接口
85
86#### 步骤4:监控与数据采集
87- **系统层**:`top/htop`, `vmstat`, `iostat`, `netstat`, `dstat`, `sar`
88- **JVM**:`jstat`, `jstack`, `jmap`, `jcmd`, GC日志分析
89- **数据库**:`SHOW PROCESSLIST`, `EXPLAIN ANALYZE`, `pg_stat_activity`, 慢查询日志
90- **APM**:Prometheus + Grafana 面板(RED指标:Rate/Errors/Duration)
91- **容器**:`kubectl top`, `cAdvisor`, `k9s`
92
93#### 步骤5:瓶颈分析
94- **CPU瓶颈**:高CPU使用率 → 检查是否有死循环、频繁GC、密集计算
95- **内存瓶颈**:内存泄漏 → heap dump分析、GC日志、OOM排查
96- **IO瓶颈**:磁盘IO高 → 检查慢查询、日志写入、文件操作
97- **网络瓶颈**:带宽不足、DNS解析慢、TCP连接池耗尽
98- **数据库瓶颈**:慢查询、锁等待、连接池耗尽、索引缺失
99- **应用瓶颈**:线程池耗尽、连接泄漏、缓存未命中、序列化开销
100
101#### 步骤6:调优建议
102- **代码级**:减少循环嵌套、使用批量操作、异步化、缓存热点数据
103- **数据库级**:添加索引、优化SQL、读写分离、分库分表、连接池调优
104- **缓存级**:Redis/Memcached缓存热点数据、CDN加速静态资源
105- **架构级**:读写分离、异步消息队列、水平扩展、限流降级熔断
106- **基础设施**:增加节点、升级硬件、调整内核参数(net.core.somaxconn等)
107
108#### 步骤7:报告输出
109- 性能测试报告模板(含测试环境、场景、结果、瓶颈分析、调优建议)
110- 趋势图(TPS趋势、响应时间分布、资源利用率曲线)
111- 对比分析(基线 vs 当前、优化前后)
112
113### 全栈开发流程
114
115```
116需求分析 → 技术选型 → 架构设计 → 数据库设计 → API开发 → 前端开发 → 联调测试 → 部署上线 → 监控运维
117```
118
119#### 步骤1:需求分析与技术选型
120- 评估业务需求,选择合适技术栈
121- 前端:React/Vue/Next.js/Nuxt + TypeScript
122- 后端:Node.js/Python/Go/Java
123- 数据库:PostgreSQL/MySQL/MongoDB/Redis
124- 部署:Docker/K8s/Serverless
125
126#### 步骤2:架构设计
127- 单体 vs 微服务 vs Serverless
128- API设计(RESTful/GraphQL/gRPC)
129- 数据流设计(同步/异步/事件驱动)
130- 缓存策略(本地缓存/分布式缓存/CDN)
131- 安全设计(认证/授权/限流/防SQL注入/XSS/CSRF)
132
133#### 步骤3:数据库设计
134- 表结构设计(范式化 vs 反范式化)
135- 索引策略(B-tree、Hash、GIN、GiST、全文索引)
136- 分库分表策略(水平分片/垂直分片)
137- 读写分离、主从复制
138
139#### 步骤4:API开发
140- RESTful API 设计规范(资源命名、HTTP方法、状态码、版本控制)
141- GraphQL 设计(Schema定义、Resolver、DataLoader优化N+1)
142- gRPC 设计(Proto定义、流式通信、双向流)
143- 中间件(认证、限流、日志、错误处理、请求验证)
144
145#### 步骤5:前端开发
146- 组件化开发(React/Vue组件设计、状态管理、Props/Events)
147- 性能优化(代码分割、懒加载、虚拟列表、图片优化、CDN)
148- 状态管理(Redux/Pinia/Zustand/React Query)
149- 构建配置(Webpack/Vite/Turbopack)
150
151#### 步骤6:部署与运维
152- Docker 容器化(Dockerfile 优化、多阶段构建、镜像瘦身)
153- Docker Compose / Kubernetes 编排
154- CI/CD 流水线(GitHub Actions / GitLab CI / Jenkins)
155- 监控告警(Prometheus + Grafana / Sentry / ELK)
156
157## 工具速查
158
159### 性能测试工具
160
161| 工具 | 适用场景 | 安装方式 |
162|------|---------|---------|
163| **k6** | 轻量压测,CI集成,JS脚本 | `brew install k6` / Docker |
164| **JMeter** | 复杂场景,分布式压测,GUI录制 | `brew install jmeter` |
165| **Locust** | Python自定义协议,Web UI | `pip install locust` |
166| **wrk** | 快速HTTP压测 | `brew install wrk` |
167| **Vegeta** | Go HTTP压测库 | `brew install vegeta` |
168| **ab** | Apache Bench,简单GET压测 | `apt install apache2-utils` |
169
170### 监控/Profiling工具
171
172| 工具 | 用途 | 命令/用法 |
173|------|------|----------|
174| **Prometheus** | 指标采集 | `prometheus --config.file=prometheus.yml` |
175| **Grafana** | 可视化面板 | `brew install grafana` |
176| **async-profiler** | Java CPU/内存采样 | `profiler.sh -d 30 -o flamegraph.html <pid>` |
177| **jstat** | JVM GC监控 | `jstat -gcutil <pid> 1000` |
178| **jstack** | Java线程栈 | `jstack <pid> > threaddump.txt` |
179| **jmap** | Java堆dump | `jmap -dump:live,format=b,file=heap.hprof <pid>` |
180| **perf** | Linux性能采样 | `perf top`, `perf record -g` |
181| **pprof** | Go性能分析 | `go tool pprof http://localhost:8080/debug/pprof/heap` |
182| **Lighthouse** | 前端性能审计 | `lighthouse https://example.com --view` |
183| **Chrome DevTools** | 前端性能分析 | Performance/Lighthouse/Network面板 |
184
185### 数据库性能诊断
186
187```sql
188-- MySQL: 查看当前运行中的查询
189SHOW FULL PROCESSLIST;
190
191-- MySQL: 慢查询日志分析
192SET GLOBAL slow_query_log = ON;
193SET GLOBAL long_query_time = 1;
194
195-- MySQL: 查询执行计划
196EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 123;
197
198-- PostgreSQL: 查看当前活跃查询
199SELECT pid, state, query, wait_event_type, wait_event
200FROM pg_stat_activity WHERE state != 'idle';
201
202-- PostgreSQL: 慢查询
203SELECT query, calls, total_time, mean_time, rows
204FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
205
206-- PostgreSQL: 锁等待
207SELECT blocked_locks.pid AS blocked_pid,
208 blocking_locks.pid AS blocking_pid
209FROM pg_locks blocked_locks
210JOIN pg_locks blocking_locks ON ...
211```
212
213### 前端性能诊断
214
215```bash
216# Lighthouse CLI
217npx lighthouse https://example.com --view
218
219# Chrome DevTools Protocol 自动化
220npx puppeteer script.js
221
222# WebPageTest API
223curl -X POST "https://www.webpagetest.org/runtest.php?url=https://example.com&f=json&k=<API_KEY>"
224```
225
226### 全栈项目脚手架
227
228```bash
229# React + Vite + TypeScript
230npm create vite@latest my-app -- --template react-ts
231
232# Next.js 全栈
233npx create-next-app@latest my-app --typescript --tailwind --eslint
234
235# FastAPI 后端
236pip install fastapi uvicorn sqlalchemy asyncpg
237
238# Spring Boot
239curl https://start.spring.io/starter.zip -d dependencies=web,data-jpa,postgresql,actuator -o demo.zip
240```
241
242## 常见问题与排查
243
244### 性能测试常见问题
245
246| 问题 | 可能原因 | 排查方法 |
247|------|---------|---------|
248| TPS上不去 | 客户端瓶颈/网络带宽/服务器资源 | 检查客户端CPU、网络、服务器资源 |
249| 响应时间突增 | 慢查询/GC暂停/锁竞争 | 查看慢查询日志、GC日志、线程dump |
250| 错误率升高 | 连接池耗尽/超时/限流触发 | 检查连接池状态、超时配置、限流阈值 |
251| 内存持续增长 | 内存泄漏 | heap dump分析、GC日志、对象引用链 |
252| CPU 100% | 死循环/频繁GC/密集计算 | jstack/async-profiler火焰图 |
253| 数据库连接耗尽 | 连接泄漏/连接池过小 | `SHOW PROCESSLIST` 检查空闲连接 |
254
255### 全栈开发常见问题
256
257| 问题 | 排查方法 |
258|------|---------|
259| 跨域问题 | 检查CORS配置、代理设置、Nginx反向代理 |
260| 接口慢 | 检查SQL执行计划、缓存命中率、N+1查询 |
261| 前端白屏 | 检查控制台错误、网络请求、JS报错、资源加载 |
262| 部署失败 | 检查Docker构建日志、K8s events、Pod状态 |
263| 内存泄漏 | heap dump分析、Chrome DevTools Memory面板 |
264| 数据库死锁 | `SHOW ENGINE INNODB STATUS` / `pg_locks` |
265
266## 报告模板
267
268### 性能测试报告结构
269
270```
2711. 测试概述(目的、范围、环境)
2722. 测试指标(TPS、响应时间、错误率、资源利用率)
2733. 测试场景(场景描述、负载模型、持续时间)
2744. 测试结果
275 - 汇总表(各场景指标对比)
276 - TPS趋势图
277 - 响应时间分布图(P50/P95/P99)
278 - 资源利用率曲线(CPU/内存/IO/网络)
2795. 瓶颈分析(逐层排查结果)
2806. 调优建议(按优先级排序)
2817. 结论(是否达标、建议上线/回滚)
282```
283
284## 注意事项
285
286### 性能测试注意事项
2871. **预热**:压测前先预热(JIT编译、连接池初始化、缓存填充)
2882. **隔离**:压测环境与生产环境隔离,避免影响线上
2893. **数据准备**:测试数据量要接近生产规模,避免冷热数据偏差
2904. **监控先行**:压测前确保监控到位(APM、资源、数据库、日志)
2915. **逐步加压**:从低并发开始逐步增加,观察系统行为变化
2926. **清理**:每次压测后清理测试数据,避免污染
2937. **多次执行**:至少执行3次取平均值,排除偶然因素
2948. **客户端瓶颈**:压测客户端本身可能成为瓶颈(CPU/网络/连接数),必要时使用分布式压测
2959. **cooldown**:每次场景间留冷却时间,让系统恢复
296
297### 全栈开发注意事项
2981. **安全第一**:SQL注入、XSS、CSRF、认证鉴权、敏感信息加密
2992. **错误处理**:全局异常捕获、友好的错误提示、日志记录
3003. **输入验证**:前后端双重验证,防止畸形数据
3014. **环境管理**:开发/测试/预发布/生产环境配置分离
3025. **版本控制**:Git分支策略(Git Flow / Trunk Based)
3036. **代码质量**:ESLint/Prettier、单元测试覆盖率 > 80%
3047. **API版本管理**:URL路径版本 / Header版本 / 参数版本
3058. **日志规范**:结构化日志(JSON格式)、链路追踪ID贯穿全链路
306
307### 与测试工程师Agent的协作
308- **`test-engineer`** 技能覆盖通用测试(单元测试、UI自动化、API测试、CI集成),适合日常测试任务
309- **`perf-fullstack-engineer`**(本技能)专注深度性能测试 + 全栈开发
310- **协作模式**:`test-engineer` 处理日常测试流水线;对于需要完整性能测试工作流的深度任务(瓶颈分析、容量规划、JVM调优等),加载本技能配合
311
312## 验证方法
313
314### 性能测试验证
3151. 运行k6脚本确认压测正常执行:`k6 run script.js`
3162. 检查Prometheus指标是否正常采集:`curl http://localhost:9090/api/v1/query?query=up`
3173. 验证Grafana面板数据展示
3184. 检查数据库慢查询日志是否开启
3195. 确认火焰图生成:`async-profiler -d 30 -o flamegraph.html <pid>`
320
321### 全栈开发验证
3221. 前端:`npm run build` 无报错,Lighthouse评分
3232. 后端:`pytest` / `go test` / `mvn test` 全部通过
3243. API:`curl` 或 Postman 验证接口响应
3254. 数据库:`EXPLAIN ANALYZE` 确认查询计划
3265. 部署:`docker-compose up` 服务正常启动
3276. CI:GitHub Actions 流水线绿色通过