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