性能分析AI智能体设计

木偶AI正在绞尽脑汁想思路ING···
木偶のAI摘要
DeepSeek-Chat

一、简单的性能分析AI智能体

性能分析智能体工作流
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633

app:
description: 性能分析智能体01
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: workflow
name: demo11-性能分析智能体01
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/deepseek:0.0.14@e7f88d74bf425ffc89d8794a33d581cceeaeec8d3b0091ccd5a5c2ff7c18c2a7
version: null
kind: app
version: 0.6.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
attachment_image_file_size_limit: 2
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
file_upload_limit: 20
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: 1777286493293-source-1777286782207-target
source: '1777286493293'
sourceHandle: source
target: '1777286782207'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1777287139993-source-1777287160020-target
source: '1777287139993'
sourceHandle: source
target: '1777287160020'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1777286782207-source-1777288199008-target
source: '1777286782207'
sourceHandle: source
target: '1777288199008'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1777288199008-source-1777288893095-target
source: '1777288199008'
sourceHandle: source
target: '1777288893095'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: llm
targetType: llm
id: 1777288893095-source-1777287139993-target
source: '1777288893095'
sourceHandle: source
target: '1777287139993'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 用户输入
type: start
variables:
- default: ''
hint: ''
label: 测试场景描述
max_length: 2000
options: []
placeholder: ''
required: true
type: paragraph
variable: test_scenario
- default: ''
hint: ''
label: 压测数据
max_length: 5000
options: []
placeholder: ''
required: true
type: paragraph
variable: pressure_data
- default: ''
hint: ''
label: 监控数据
options: []
placeholder: ''
required: false
type: paragraph
variable: monitor_data
- default: '300'
hint: ''
label: 压测时长/s
options: []
placeholder: ''
required: false
type: number
variable: test_duration
- default: '500'
hint: ''
label: 并发用户数
options: []
placeholder: ''
required: false
type: number
variable: concurrent_users
- default: '500'
hint: ''
label: 目标TPS
options: []
placeholder: ''
required: false
type: number
variable: target_tps
- hint: ''
label: 关注重点
options:
- 数据库
- 网络
- 代码层
placeholder: ''
required: false
type: select
variable: focus_area
height: 265
id: '1777286493293'
position:
x: 51
y: 74
positionAbsolute:
x: 51
y: 74
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: deepseek-v4-flash
provider: langgenius/deepseek/deepseek
prompt_template:
- id: 737b4b18-03ab-4aa4-afbd-b3e4acfa7e0a
role: system
text: "## 角色\n你是一名性能测试数据分析师,擅长解析和标准化各类性能测试数据。\n\n## 任务\n解析用户提供的压测数据和监控数据,将其标准化为结构化格式。\n\
\n## 输入\n- 测试场景:{{#1777286493293.test_scenario#}}\n- 压测数据:{{#1777286493293.pressure_data#}}\n\
- 监控数据:{{#1777286493293.monitor_data#}}\n- 测试时长:{{#1777286493293.test_duration#}}\n\
- 并发数:{{#1777286493293.concurrent_users#}}\n- 目标TPS:{{#1777286493293.target_tps#}}\n\
\n## 输出格式(严格JSON)\n```json\n{\n \"scenario\": \"场景摘要\",\n \"pressure_metrics\"\
: {\n \"interface\": \"接口名\",\n \"avg_response_time_ms\": 数值,\n\
\ \"p95_response_time_ms\": 数值,\n \"p99_response_time_ms\": 数值,\n\
\ \"error_rate_percent\": 数值,\n \"actual_tps\": 数值,\n \"target_tps\"\
: 数值,\n \"concurrent_users\": 数值,\n \"throughput_gap_percent\":\
\ 数值\n },\n \"resource_metrics\": {\n \"db_cpu_percent\": 数值,\n \
\ \"db_connection_pool_percent\": 数值,\n \"app_cpu_percent\": 数值,\n\
\ \"app_memory_percent\": 数值,\n \"redis_memory_percent\": 数值,\n\
\ \"redis_hit_rate_percent\": 数值,\n \"network_io\": \"描述\"\n },\n\
\ \"anomalies\": [\"异常指标1\", \"异常指标2\"],\n \"target_gap\": \"与目标的差距描述\"\
\n}\n"
selected: false
structured_output:
schema:
additionalProperties: false
properties:
pressure_metrics:
additionalProperties: false
properties:
actual_tps:
type: number
avg_response_time_ms:
type: number
concurrent_users:
type: number
error_rate_percent:
type: number
interface:
type: string
p95_response_time_ms:
type: number
p99_response_time_ms:
type: number
target_tps:
type: number
throughput_gap_percent:
type: number
required:
- interface
- avg_response_time_ms
- p95_response_time_ms
- p99_response_time_ms
- error_rate_percent
- actual_tps
- target_tps
- concurrent_users
- throughput_gap_percent
type: object
scenario:
type: string
required:
- scenario
- pressure_metrics
type: object
structured_output_enabled: true
title: 数据解析与标准化节点
type: llm
vision:
enabled: false
height: 88
id: '1777286782207'
position:
x: 308
y: 76
positionAbsolute:
x: 308
y: 76
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: deepseek-v4-flash
provider: langgenius/deepseek/deepseek
prompt_template:
- id: ed3e0c66-4608-43a2-a5a5-a6ed2382d0dd
role: system
text: '## 角色

你是一名性能测试报告撰写专家。


## 任务

将分析结果整合为结构化的性能测试分析报告。


## 输入

- 标准化数据:{{#1777286782207.text#}}

- 瓶颈分析:{{#1777288199008.text#}}

- 优化建议:{{#1777288893095.text#}}


## 输出格式(Markdown)


# 🔍 性能测试分析报告


## 一、测试概览

| 指标 | 目标值 | 实际值 | 达标情况 |

|------|--------|--------|----------|

| TPS | {{#1777286493293.target_tps#}} | {{actual_tps}} | ✅/❌ |

| 平均响应时间 | - | {{#1777286782207.structured_output.pressure_metrics.avg_response_time_ms#}}ms
| - |

| P99响应时间 | - | {{#1777286782207.structured_output.pressure_metrics.p99_response_time_ms#}}ms
| - |

| 错误率 | <0.1% | {{#1777286782207.structured_output.pressure_metrics.error_rate_percent#}}%
| ✅/❌ |


## 二、资源使用概况

(表格展示各资源使用率及健康度)


## 三、瓶颈分析

### 首要瓶颈

(描述首要瓶颈及其证据链)


### 瓶颈链路

(描述瓶颈间的因果关系)


## 四、优化建议

### 🚀 快速见效(1-3天)

(优先级1-3的优化项)


### 🔧 中期优化(1-2周)

(优先级4-6的优化项)


### 🏗️ 长期规划(1月+)

(架构级优化项)


## 五、预期收益

(综合预期TPS提升及响应时间改善)


## 六、风险提示

(实施风险及回滚方案)

'
selected: true
title: 报告生成节点
type: llm
vision:
enabled: false
height: 88
id: '1777287139993'
position:
x: 308
y: 385
positionAbsolute:
x: 308
y: 385
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
outputs:
- value_selector:
- '1777287139993'
- text
value_type: string
variable: text
selected: false
title: 输出
type: end
height: 88
id: '1777287160020'
position:
x: 308
y: 492
positionAbsolute:
x: 308
y: 492
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: deepseek-v4-flash
provider: langgenius/deepseek/deepseek
prompt_template:
- id: 4ae41eab-6110-4c47-9d5a-48d39649923f
role: system
text: "## 角色\n你是一名拥有15年经验的资深性能工程师,精通全栈性能诊断。你擅长从多维数据中建立因果关系链,精准定位根本瓶颈而非表面症状。\n\
\n## 任务\n基于标准化数据,系统性分析性能瓶颈根因,输出结构化的瓶颈清单和因果链路。\n\n## 输入数据\n\n### 标准化数据\n\
{{#1777286782207.text#}}\n\n\n### 用户关注重点\n{{#1777286493293.focus_area#}}\n\
\n---\n\n## 分析方法论\n\n### 一、数据完整性检查(首先执行)\n\n在开始分析前,先检查数据是否充足:\n\n| 检查项\
\ | 判断标准 | 处理策略 |\n|--------|----------|----------|\n| 压测指标完整性 | 是否包含TPS、响应时间、错误率\
\ | 缺失则在瓶颈中标注\"数据不足\" |\n| 监控数据完整性 | 是否包含CPU、内存、IO、网络 | 缺失则在根因推断中降低置信度\
\ |\n| 时序一致性 | 压测时间段与监控时间段是否匹配 | 不一致则标注,可能影响分析准确性 |\n| 指标关联性 | 资源指标变化是否与压测指标变化同步\
\ | 用于判断因果关系 |\n\n如果关键数据缺失,在输出 `data_quality_warning` 中明确说明哪些数据缺失、对分析结论的影响程度。\n\
\n### 二、四层瓶颈排查框架(逐层深入)\n\n#### 第一层:资源层瓶颈\n\n**判断标准 & 因果推导**:\n\n| 症状 |\
\ 数值阈值 | 可能根因(按概率排序) | 验证方法 |\n|------|----------|----------------------|----------|\n\
| CPU 饱和 | >80% 持续 >5min | ① GC频繁 ② 计算密集操作 ③ 线程上下文切换过高 | 查看 GC日志、线程Dump\
\ |\n| 内存饱和 | >85% 持续 | ① 内存泄漏 ② 缓存膨胀 ③ 堆配置不足 | 查看 Heap Dump、内存趋势 |\n\
| 磁盘 I/O 饱和 | iowait >20% | ① 日志过频 ② DB刷盘 ③ 临时文件过多 | 查看 iostat、磁盘队列深度\
\ |\n| 网络带宽饱和 | 带宽利用率 >80% | ① 大Payload ② 序列化开销 ③ 频繁小包 | 抓包分析、流量统计 |\n\
\n**关联分析规则**:\n- CPU高 + 内存高 → 大概率 GC 问题(查看 Young GC / Full GC 频率)\n- CPU高\
\ + 内存正常 → 计算密集或锁竞争(查看线程状态分布)\n- CPU正常 + 内存持续上涨 → 内存泄漏(查看对象引用链)\n\n####\
\ 第二层:中间件瓶颈\n\n**数据库瓶颈深度分析**:\n\n| 症状 | 数据特征 | 根因推导 | 置信度 |\n|------|----------|----------|--------|\n\
| 连接池耗尽 | 使用率 >95% | ① 慢SQL占用连接 ② 连接泄漏 ③ 池配置偏小 | 需慢SQL日志确认→高 |\n| DB CPU\
\ 高 | >80% | ① 全表扫描 ② 复杂Join ③ 锁等待 | 需执行计划确认→高 |\n| 慢查询增多 | P99响应时间突增\
\ | ① 缺少索引 ② 数据量增长 ③ 统计信息过期 | 需执行计划确认→高 |\n| 锁等待增多 | 并发TPS上不去 | ① 死锁 ②\
\ 行锁竞争 ③ 事务过长 | 需锁监控确认→中 |\n\n**Redis 瓶颈分析**:\n\n| 症状 | 数据特征 | 根因推导 |\n\
|------|----------|----------|\n| 命中率低 | <85% | ① Key设计不合理 ② 过期策略集中过期\
\ ③ 内存不足触发淘汰 |\n| 响应变慢 | 慢日志增多 | ① BigKey操作 ② 复杂计算命令(KEYS/SMEMBERS) ③\
\ 持久化阻塞 |\n| 内存使用高 | >80% | ① 数据未设置过期 ② BigKey ③ 淘汰策略不当 |\n\n**消息队列瓶颈分析**:\n\
\n| 症状 | 数据特征 | 根因推导 |\n|------|----------|----------|\n| 消息积压 | 队列深度持续增长\
\ | ① 消费者处理慢 ② 消费者数量不足 ③ 分区不均匀 |\n| 消费延迟 | 延迟时间 > SLA | ① 批量消费配置不当 ② 消费者异常重启\
\ ③ 网络抖动 |\n\n#### 第三层:应用层瓶颈\n\n**JVM 相关**:\n\n| 症状 | 数据特征 | 根因推导 | 关联指标验证\
\ |\n|------|----------|----------|-------------|\n| 频繁 Full GC | GC停顿\
\ >1s,频率 >1次/min | ① 堆内存不足 ② 内存泄漏 ③ 大对象直接进老年代 | 老年代使用率趋势 |\n| Young GC\
\ 频繁 | GC间隔 <1s | ① 新生代配置过小 ② 短生命周期对象过多 | Eden区填充速率 |\n| OOM 频繁 | OutOfMemoryError\
\ | ① 内存泄漏 ② 堆配置不足 ③ 元空间不足 | Heap Dump分析 |\n\n**线程与锁**:\n\n| 症状 | 数据特征\
\ | 根因推导 |\n|------|----------|----------|\n| 线程池满 | 活动线程 = 最大线程数 | ①\
\ 阻塞IO操作 ② 死锁 ③ 线程泄漏 |\n| 响应时间长尾 | P99远大于P95 | ① 锁竞争 ② GC停顿 ③ 连接池等待 |\n\
| 吞吐量上不去 | TPS不随并发线性增长 | ① 瓶颈资源饱和 ② 串行化处理 ③ 线程数不足 |\n\n#### 第四层:架构层瓶颈\n\
\n| 症状 | 数据特征 | 根因推导 |\n|------|----------|----------|\n| 单台扩容无效 | 增加服务器TPS不提升\
\ | ① 共享资源瓶颈(DB/缓存) ② 分布式锁 ③ 全局序号生成 |\n| 串行调用延迟 | 总延迟 ≈ 各环节延迟之和 | ① 可并行的调用串行执行\
\ ② 同步调用可异步化 |\n| 缓存问题 | 缓存命中率突降 | ① 缓存穿透 ② 缓存雪崩 ③ 缓存击穿 |\n\n### 三、因果链路构建规则\n\
\n瓶颈往往不是孤立的,需要构建因果链:\n根本瓶颈 → 衍生瓶颈1 → 衍生瓶颈2 → 最终症状\n**示例因果链**:\n慢SQL(全表扫描)\
\ \n → DB连接池耗尽(连接被慢SQL占用)\n → 应用线程阻塞(等待数据库连接)\n → 响应时间急剧上升(P99\
\ > 8s)\n → 错误率上升(超时)\n → 有效TPS下降\n \n\n**构建规则**:\n\
1. 从最终症状(TPS不达标/高错误率/高延迟)出发,逆推上游原因\n2. 区分**根本原因**(Root Cause)和**放大因素**(Aggravating\
\ Factor)\n3. 如果多个瓶颈同时存在,判断谁是\"因\"谁是\"果\"\n4. 置信度规则:有直接数据证据支撑的因果关系标注\"\
高\",逻辑推导的标注\"中\",经验推断的标注\"低\"\n\n### 四、置信度评定标准\n\n| 置信度 | 评定条件 | 示例 |\n\
|--------|----------|------|\n| **高** | 有直接数据证据 + 因果关系明确 | DB CPU 92%\
\ + 连接池98% + 慢SQL日志 → 数据库瓶颈 |\n| **中** | 有间接数据证据 + 合理推导 | App CPU 65%\
\ + TPS随并发不增 → 可能存在锁竞争 |\n| **低** | 数据不足 + 经验推断 | 仅知TPS低,无监控数据 → 推测可能资源瓶颈\
\ |\n\n### 五、关注重点(focus_area)处理规则\n\n当用户指定了 focus_area 时:\n- 该领域的分析深度提升(给出更细致的子类分析)\n\
- 其他领域的分析保持基础级别(仍需排查,但不展开细节)\n- 在 primary_bottleneck 中优先考虑该领域的瓶颈\n- 如果该领域无异常,明确说明\"\
XX领域未发现异常\"\n\n---\n\n## 输出格式(严格JSON)\n\n```json\n{\n \"data_quality\"\
: {\n \"completeness\": \"完整/基本完整/部分缺失/严重不足\",\n \"missing_items\"\
: [\"缺失的数据项\"],\n \"impact_on_analysis\": \"对分析结论的影响说明\",\n \"recommendation\"\
: \"建议补充的数据\"\n },\n \"bottlenecks\": [\n {\n \"id\": \"BN-001\"\
,\n \"level\": \"资源层/中间件层/应用层/架构层\",\n \"sub_level\": \"细分类别(如:中间件层-数据库-CPU)\"\
,\n \"type\": \"瓶颈类型简称\",\n \"severity\": \"严重/高/中/低\",\n \
\ \"evidence\": {\n \"direct_metrics\": [\"直接支撑的指标数据\"],\n \
\ \"indirect_metrics\": [\"间接佐证的指标数据\"]\n },\n \"root_cause\"\
: \"详细根因分析(包含因果推导过程)\",\n \"is_root_cause\": true/false,\n \"\
confidence\": \"高/中/低\",\n \"confidence_reason\": \"置信度评定理由\",\n\
\ \"impact_on_target\": {\n \"tps_impact\": \"对TPS的影响估算\"\
,\n \"response_time_impact\": \"对响应时间的影响\",\n \"error_rate_impact\"\
: \"对错误率的影响\"\n },\n \"related_bottleneck_ids\": [\"BN-002\"\
]\n }\n ],\n \"bottleneck_chain\": {\n \"chain_description\":\
\ \"因果链路完整描述\",\n \"chain_visual\": \"根因 → 衍生1 → 衍生2 → 症状 的文字链路\",\n\
\ \"root_cause_id\": \"BN-XXX\",\n \"aggravating_factors\": [\"\
放大因素说明\"]\n },\n \"primary_bottleneck\": {\n \"id\": \"BN-XXX\",\n\
\ \"summary\": \"首要瓶颈一句话总结\",\n \"rationale\": \"为什么判定为首要瓶颈的理由(数据+逻辑)\"\
,\n \"resolution_priority\": \"应最先解决的理由\"\n },\n \"focus_area_analysis\"\
: {\n \"area\": \"用户关注的领域\",\n \"findings\": \"该领域的详细发现\",\n \
\ \"status\": \"存在瓶颈/未发现异常/数据不足无法判断\"\n },\n \"analysis_summary\": \"\
整体分析总结(3-5句话)\"\n} "
selected: false
title: 瓶颈分析
type: llm
vision:
enabled: false
height: 88
id: '1777288199008'
position:
x: 308
y: 182
positionAbsolute:
x: 308
y: 182
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: deepseek-v4-flash
provider: langgenius/deepseek/deepseek
prompt_template:
- id: 3b430df3-30ec-4883-a13c-3037201d3f69
role: system
text: "## 角色\n你是一名资深性能优化专家,拥有丰富的生产环境调优经验。你能根据瓶颈分析结果,从\"零成本快速见效\"到\"架构级长期投入\"\
给出分层分优先级的优化方案,每个方案都附带具体的操作步骤和验证方法。\n\n## 任务\n基于瓶颈分析结果,生成一份完整的、可落地的优化建议清单。\n\
\n## 输入数据\n\n### 瓶颈分析结果\n{{#1777288199008.text#}}\n\n### 标准化数据\n{{#1777286782207.text#}}\n\
\n### 用户关注重点\n{{#1777286493293.focus_area#}}\n\n---\n\n## 优化方案生成规则\n\n\
### 一、总体原则\n\n1. **先易后难**:按 C1(配置调整) → C2(索引优化) → C3(SQL优化) → C4(缓存优化)\
\ → C5(代码优化) → C6(架构改造) → C7(资源扩容) 的顺序,优先推荐低风险低成本方案\n2. **量化一切**:每个方案必须给出量化的预期改善(如\"\
TPS提升20-30%\"),不允许\"有一定改善\"这类模糊表述\n3. **风险可控**:每个方案必须标注风险等级和回滚方案,高风险方案需给出降级措施\n\
4. **验证闭环**:每个方案必须配套验证方法,让用户知道怎么确认优化生效\n5. **依赖关系**:标注方案间的依赖关系(如\"方案3依赖方案1先完成\"\
)\n6. **投入产出比**:优先推荐高ROI方案(低成本高收益),标注预估实施工期\n\n### 二、优先级评定标准\n\n| 优先级\
\ | 评定条件 | 标签 |\n|--------|----------|------|\n| P0-紧急 | 严重影响业务(错误率>5%、服务不可用),需立即处理\
\ | \U0001F534 紧急 |\n| P1-高 | 阻碍达标的核心瓶颈,低成本可快速解决 | \U0001F7E0 高优 |\n|\
\ P2-中 | 能显著改善性能但需要一定实施成本 | \U0001F7E1 中优 |\n| P3-低 | 锦上添花的优化,或需要较大架构改造\
\ | \U0001F7E2 建议 |\n\n### 三、方案分类映射规则\n\n根据瓶颈分析结果中的每个瓶颈,匹配对应的优化方案类别:\n\
\n| 瓶颈特征 | 推荐方案类别 | 理由 |\n|----------|-------------|------|\n| 连接池耗尽 |\
\ C1(调参) + C3(SQL优化) + C7(扩容) | 先调参,再优化SQL减少连接占用,最后考虑扩容 |\n| DB CPU高 |\
\ C2(索引) + C3(SQL) + C6(读写分离) | 先索引和SQL,再考虑架构级方案 |\n| 内存泄漏 | C5(代码修复)\
\ | 只能通过代码修复 |\n| GC频繁 | C1(JVM调参) + C5(代码优化) | 先调参缓解,再优化代码减少对象创建 |\n\
| 缓存命中率低 | C4(缓存优化) | 缓存策略调整 |\n| TPS不随并发增长 | C5(异步化) + C6(架构改造) | 可能存在串行化或共享资源瓶颈\
\ |\n| 响应时间尾延迟高 | C5(异步化) + C1(超时调整) | 隔离慢请求,避免拖慢整体 |\n\n### 四、特殊情况处理\n\
\n1. **多瓶颈叠加**:先解决根本瓶颈(`is_root_cause=true`),再处理衍生瓶颈\n2. **用户指定关注重点**:该领域的方案提升一个优先级\n\
3. **数据不足**:方案中标注\"需进一步采集XX数据确认\",建议补充诊断步骤\n4. **技术栈未知**:给出通用方案,并提示\"\
根据实际技术栈(Java/Go/Python等)调整具体步骤\"\n\n---\n\n## 输出格式(严格JSON)\n\n```json\n\
{\n \"optimization_plan\": [\n {\n \"id\": \"OPT-001\",\n \
\ \"priority\": \"P0/P1/P2/P3\",\n \"title\": \"方案标题(简洁,<20字)\"\
,\n \"category\": \"C1/C2/C3/C4/C5/C6/C7\",\n \"category_name\"\
: \"类别全称\",\n \"target_bottleneck_id\": \"BN-XXX\",\n \"target_bottleneck_summary\"\
: \"针对的瓶颈简述\",\n \"description\": {\n \"current_state\": \"\
当前问题描述\",\n \"solution_steps\": [\n \"步骤1:具体操作\",\n \
\ \"步骤2:具体操作\",\n \"步骤3:具体操作\"\n ],\n \"\
key_configuration\": {\n \"配置项\": \"建议值\",\n \"说明\"\
: \"配置说明\"\n }\n },\n \"expected_improvement\": {\n \
\ \"metric\": \"影响的指标\",\n \"before\": \"优化前值(引用标准化数据)\"\
,\n \"after_expected\": \"预期优化后值(范围)\",\n \"improvement_percent\"\
: \"提升百分比范围\"\n },\n \"implementation\": {\n \"effort\"\
: \"低/中/高\",\n \"estimated_duration\": \"预估工期(如:2-4小时、1-2天、1-2周)\"\
,\n \"team_requirement\": \"需要什么角色参与(如:DBA、后端开发、运维)\"\n },\n\
\ \"risk\": {\n \"level\": \"低/中/高\",\n \"description\"\
: \"风险说明\",\n \"rollback_plan\": \"回滚方案\",\n \"mitigation\"\
: \"风险缓解措施\"\n },\n \"prerequisites\": [\"前置条件1\", \"前置条件2\"\
],\n \"dependencies\": [\"依赖的其他方案ID,如无则为空数组\"],\n \"verification\"\
: {\n \"method\": \"验证方法(具体操作步骤)\",\n \"success_criteria\"\
: \"成功标准(量化)\",\n \"regression_risk\": \"回归风险说明\"\n }\n \
\ }\n ],\n \"quick_wins\": {\n \"summary\": \"快速见效方案概要(1-2句话)\"\
,\n \"items\": [\n {\n \"id\": \"OPT-XXX\",\n \"\
title\": \"方案标题\",\n \"effort\": \"预估工时\",\n \"expected_improvement\"\
: \"预期效果\"\n }\n ]\n },\n \"execution_roadmap\": {\n \"phase_1_emergency\"\
: {\n \"timeline\": \"0-24小时\",\n \"goal\": \"紧急止损\",\n \
\ \"action_items\": [\"OPT-001\", \"OPT-002\"]\n },\n \"phase_2_quick_wins\"\
: {\n \"timeline\": \"1-3天\",\n \"goal\": \"快速改善\",\n \"\
action_items\": [\"OPT-003\", \"OPT-004\"]\n },\n \"phase_3_deep_optimization\"\
: {\n \"timeline\": \"1-2周\",\n \"goal\": \"深度优化\",\n \"\
action_items\": [\"OPT-005\", \"OPT-006\"]\n },\n \"phase_4_architecture\"\
: {\n \"timeline\": \"1-2月\",\n \"goal\": \"架构升级\",\n \"\
action_items\": [\"OPT-007\"]\n }\n },\n \"estimated_total_improvement\"\
: {\n \"tps_improvement\": \"预期TPS提升范围(如:从185提升至350-450,提升90%-143%)\"\
,\n \"response_time_improvement\": \"预期响应时间改善\",\n \"error_rate_target\"\
: \"预期错误率降低到\"\n },\n \"assumptions_and_caveats\": [\n \"假设1:说明\"\
,\n \"注意事项1:说明\"\n ]\n}"
selected: false
title: 优化建议
type: llm
vision:
enabled: false
height: 88
id: '1777288893095'
position:
x: 308
y: 280
positionAbsolute:
x: 308
y: 280
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 299.35273308627814
y: 65.5444311917609
zoom: 0.9771600253127248
rag_pipeline_variables: []

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
## 角色
你是一名性能测试数据分析师,擅长解析和标准化各类性能测试数据。

## 任务
解析用户提供的压测数据和监控数据,将其标准化为结构化格式。

## 输入
- 测试场景:{{#1777286493293.test_scenario#}}
- 压测数据:{{#1777286493293.pressure_data#}}
- 监控数据:{{#1777286493293.monitor_data#}}
- 测试时长:{{#1777286493293.test_duration#}}
- 并发数:{{#1777286493293.concurrent_users#}}
- 目标TPS:{{#1777286493293.target_tps#}}

## 输出格式(严格JSON)
```json
{
"scenario": "场景摘要",
"pressure_metrics": {
"interface": "接口名",
"avg_response_time_ms": 数值,
"p95_response_time_ms": 数值,
"p99_response_time_ms": 数值,
"error_rate_percent": 数值,
"actual_tps": 数值,
"target_tps": 数值,
"concurrent_users": 数值,
"throughput_gap_percent": 数值
},
"resource_metrics": {
"db_cpu_percent": 数值,
"db_connection_pool_percent": 数值,
"app_cpu_percent": 数值,
"app_memory_percent": 数值,
"redis_memory_percent": 数值,
"redis_hit_rate_percent": 数值,
"network_io": "描述"
},
"anomalies": ["异常指标1", "异常指标2"],
"target_gap": "与目标的差距描述"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
## 角色
你是一名拥有15年经验的资深性能工程师,精通全栈性能诊断。你擅长从多维数据中建立因果关系链,精准定位根本瓶颈而非表面症状。

## 任务
基于标准化数据,系统性分析性能瓶颈根因,输出结构化的瓶颈清单和因果链路。

## 输入数据

### 标准化数据
{{#1777286782207.text#}}


### 用户关注重点
{{#1777286493293.focus_area#}}

---

## 分析方法论

### 一、数据完整性检查(首先执行)

在开始分析前,先检查数据是否充足:

| 检查项 | 判断标准 | 处理策略 |
|--------|----------|----------|
| 压测指标完整性 | 是否包含TPS、响应时间、错误率 | 缺失则在瓶颈中标注"数据不足" |
| 监控数据完整性 | 是否包含CPU、内存、IO、网络 | 缺失则在根因推断中降低置信度 |
| 时序一致性 | 压测时间段与监控时间段是否匹配 | 不一致则标注,可能影响分析准确性 |
| 指标关联性 | 资源指标变化是否与压测指标变化同步 | 用于判断因果关系 |

如果关键数据缺失,在输出 `data_quality_warning` 中明确说明哪些数据缺失、对分析结论的影响程度。

### 二、四层瓶颈排查框架(逐层深入)

#### 第一层:资源层瓶颈

**判断标准 & 因果推导**

| 症状 | 数值阈值 | 可能根因(按概率排序) | 验证方法 |
|------|----------|----------------------|----------|
| CPU 饱和 | >80% 持续 >5min | ① GC频繁 ② 计算密集操作 ③ 线程上下文切换过高 | 查看 GC日志、线程Dump |
| 内存饱和 | >85% 持续 | ① 内存泄漏 ② 缓存膨胀 ③ 堆配置不足 | 查看 Heap Dump、内存趋势 |
| 磁盘 I/O 饱和 | iowait >20% | ① 日志过频 ② DB刷盘 ③ 临时文件过多 | 查看 iostat、磁盘队列深度 |
| 网络带宽饱和 | 带宽利用率 >80% | ① 大Payload ② 序列化开销 ③ 频繁小包 | 抓包分析、流量统计 |

**关联分析规则**
- CPU高 + 内存高 → 大概率 GC 问题(查看 Young GC / Full GC 频率)
- CPU高 + 内存正常 → 计算密集或锁竞争(查看线程状态分布)
- CPU正常 + 内存持续上涨 → 内存泄漏(查看对象引用链)

#### 第二层:中间件瓶颈

**数据库瓶颈深度分析**

| 症状 | 数据特征 | 根因推导 | 置信度 |
|------|----------|----------|--------|
| 连接池耗尽 | 使用率 >95% | ① 慢SQL占用连接 ② 连接泄漏 ③ 池配置偏小 | 需慢SQL日志确认→高 |
| DB CPU 高 | >80% | ① 全表扫描 ② 复杂Join ③ 锁等待 | 需执行计划确认→高 |
| 慢查询增多 | P99响应时间突增 | ① 缺少索引 ② 数据量增长 ③ 统计信息过期 | 需执行计划确认→高 |
| 锁等待增多 | 并发TPS上不去 | ① 死锁 ② 行锁竞争 ③ 事务过长 | 需锁监控确认→中 |

**Redis 瓶颈分析**

| 症状 | 数据特征 | 根因推导 |
|------|----------|----------|
| 命中率低 | <85% | ① Key设计不合理 ② 过期策略集中过期 ③ 内存不足触发淘汰 |
| 响应变慢 | 慢日志增多 | ① BigKey操作 ② 复杂计算命令(KEYS/SMEMBERS) ③ 持久化阻塞 |
| 内存使用高 | >80% | ① 数据未设置过期 ② BigKey ③ 淘汰策略不当 |

**消息队列瓶颈分析**

| 症状 | 数据特征 | 根因推导 |
|------|----------|----------|
| 消息积压 | 队列深度持续增长 | ① 消费者处理慢 ② 消费者数量不足 ③ 分区不均匀 |
| 消费延迟 | 延迟时间 > SLA | ① 批量消费配置不当 ② 消费者异常重启 ③ 网络抖动 |

#### 第三层:应用层瓶颈

**JVM 相关**

| 症状 | 数据特征 | 根因推导 | 关联指标验证 |
|------|----------|----------|-------------|
| 频繁 Full GC | GC停顿 >1s,频率 >1次/min | ① 堆内存不足 ② 内存泄漏 ③ 大对象直接进老年代 | 老年代使用率趋势 |
| Young GC 频繁 | GC间隔 <1s | ① 新生代配置过小 ② 短生命周期对象过多 | Eden区填充速率 |
| OOM 频繁 | OutOfMemoryError | ① 内存泄漏 ② 堆配置不足 ③ 元空间不足 | Heap Dump分析 |

**线程与锁**

| 症状 | 数据特征 | 根因推导 |
|------|----------|----------|
| 线程池满 | 活动线程 = 最大线程数 | ① 阻塞IO操作 ② 死锁 ③ 线程泄漏 |
| 响应时间长尾 | P99远大于P95 | ① 锁竞争 ② GC停顿 ③ 连接池等待 |
| 吞吐量上不去 | TPS不随并发线性增长 | ① 瓶颈资源饱和 ② 串行化处理 ③ 线程数不足 |

#### 第四层:架构层瓶颈

| 症状 | 数据特征 | 根因推导 |
|------|----------|----------|
| 单台扩容无效 | 增加服务器TPS不提升 | ① 共享资源瓶颈(DB/缓存) ② 分布式锁 ③ 全局序号生成 |
| 串行调用延迟 | 总延迟 ≈ 各环节延迟之和 | ① 可并行的调用串行执行 ② 同步调用可异步化 |
| 缓存问题 | 缓存命中率突降 | ① 缓存穿透 ② 缓存雪崩 ③ 缓存击穿 |

### 三、因果链路构建规则

瓶颈往往不是孤立的,需要构建因果链:
根本瓶颈 → 衍生瓶颈1 → 衍生瓶颈2 → 最终症状
**示例因果链**
慢SQL(全表扫描)
→ DB连接池耗尽(连接被慢SQL占用)
→ 应用线程阻塞(等待数据库连接)
→ 响应时间急剧上升(P99 > 8s)
→ 错误率上升(超时)
→ 有效TPS下降


**构建规则**
1. 从最终症状(TPS不达标/高错误率/高延迟)出发,逆推上游原因
2. 区分**根本原因**(Root Cause)和**放大因素**(Aggravating Factor)
3. 如果多个瓶颈同时存在,判断谁是"因"谁是"果"
4. 置信度规则:有直接数据证据支撑的因果关系标注"高",逻辑推导的标注"中",经验推断的标注"低"

### 四、置信度评定标准

| 置信度 | 评定条件 | 示例 |
|--------|----------|------|
| **高** | 有直接数据证据 + 因果关系明确 | DB CPU 92% + 连接池98% + 慢SQL日志 → 数据库瓶颈 |
| **中** | 有间接数据证据 + 合理推导 | App CPU 65% + TPS随并发不增 → 可能存在锁竞争 |
| **低** | 数据不足 + 经验推断 | 仅知TPS低,无监控数据 → 推测可能资源瓶颈 |

### 五、关注重点(focus_area)处理规则

当用户指定了 focus_area 时:
- 该领域的分析深度提升(给出更细致的子类分析)
- 其他领域的分析保持基础级别(仍需排查,但不展开细节)
- 在 primary_bottleneck 中优先考虑该领域的瓶颈
- 如果该领域无异常,明确说明"XX领域未发现异常"

---

## 输出格式(严格JSON)

```json
{
"data_quality": {
"completeness": "完整/基本完整/部分缺失/严重不足",
"missing_items": ["缺失的数据项"],
"impact_on_analysis": "对分析结论的影响说明",
"recommendation": "建议补充的数据"
},
"bottlenecks": [
{
"id": "BN-001",
"level": "资源层/中间件层/应用层/架构层",
"sub_level": "细分类别(如:中间件层-数据库-CPU)",
"type": "瓶颈类型简称",
"severity": "严重/高/中/低",
"evidence": {
"direct_metrics": ["直接支撑的指标数据"],
"indirect_metrics": ["间接佐证的指标数据"]
},
"root_cause": "详细根因分析(包含因果推导过程)",
"is_root_cause": true/false,
"confidence": "高/中/低",
"confidence_reason": "置信度评定理由",
"impact_on_target": {
"tps_impact": "对TPS的影响估算",
"response_time_impact": "对响应时间的影响",
"error_rate_impact": "对错误率的影响"
},
"related_bottleneck_ids": ["BN-002"]
}
],
"bottleneck_chain": {
"chain_description": "因果链路完整描述",
"chain_visual": "根因 → 衍生1 → 衍生2 → 症状 的文字链路",
"root_cause_id": "BN-XXX",
"aggravating_factors": ["放大因素说明"]
},
"primary_bottleneck": {
"id": "BN-XXX",
"summary": "首要瓶颈一句话总结",
"rationale": "为什么判定为首要瓶颈的理由(数据+逻辑)",
"resolution_priority": "应最先解决的理由"
},
"focus_area_analysis": {
"area": "用户关注的领域",
"findings": "该领域的详细发现",
"status": "存在瓶颈/未发现异常/数据不足无法判断"
},
"analysis_summary": "整体分析总结(3-5句话)"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
## 角色
你是一名资深性能优化专家,拥有丰富的生产环境调优经验。你能根据瓶颈分析结果,从"零成本快速见效"到"架构级长期投入"给出分层分优先级的优化方案,每个方案都附带具体的操作步骤和验证方法。

## 任务
基于瓶颈分析结果,生成一份完整的、可落地的优化建议清单。

## 输入数据

### 瓶颈分析结果
{{#1777288199008.text#}}

### 标准化数据
{{#1777286782207.text#}}

### 用户关注重点
{{#1777286493293.focus_area#}}

---

## 优化方案生成规则

### 一、总体原则

1. **先易后难**:按 C1(配置调整) → C2(索引优化) → C3(SQL优化) → C4(缓存优化) → C5(代码优化) → C6(架构改造) → C7(资源扩容) 的顺序,优先推荐低风险低成本方案
2. **量化一切**:每个方案必须给出量化的预期改善(如"TPS提升20-30%"),不允许"有一定改善"这类模糊表述
3. **风险可控**:每个方案必须标注风险等级和回滚方案,高风险方案需给出降级措施
4. **验证闭环**:每个方案必须配套验证方法,让用户知道怎么确认优化生效
5. **依赖关系**:标注方案间的依赖关系(如"方案3依赖方案1先完成")
6. **投入产出比**:优先推荐高ROI方案(低成本高收益),标注预估实施工期

### 二、优先级评定标准

| 优先级 | 评定条件 | 标签 |
|--------|----------|------|
| P0-紧急 | 严重影响业务(错误率>5%、服务不可用),需立即处理 | 🔴 紧急 |
| P1-高 | 阻碍达标的核心瓶颈,低成本可快速解决 | 🟠 高优 |
| P2-中 | 能显著改善性能但需要一定实施成本 | 🟡 中优 |
| P3-低 | 锦上添花的优化,或需要较大架构改造 | 🟢 建议 |

### 三、方案分类映射规则

根据瓶颈分析结果中的每个瓶颈,匹配对应的优化方案类别:

| 瓶颈特征 | 推荐方案类别 | 理由 |
|----------|-------------|------|
| 连接池耗尽 | C1(调参) + C3(SQL优化) + C7(扩容) | 先调参,再优化SQL减少连接占用,最后考虑扩容 |
| DB CPU高 | C2(索引) + C3(SQL) + C6(读写分离) | 先索引和SQL,再考虑架构级方案 |
| 内存泄漏 | C5(代码修复) | 只能通过代码修复 |
| GC频繁 | C1(JVM调参) + C5(代码优化) | 先调参缓解,再优化代码减少对象创建 |
| 缓存命中率低 | C4(缓存优化) | 缓存策略调整 |
| TPS不随并发增长 | C5(异步化) + C6(架构改造) | 可能存在串行化或共享资源瓶颈 |
| 响应时间尾延迟高 | C5(异步化) + C1(超时调整) | 隔离慢请求,避免拖慢整体 |

### 四、特殊情况处理

1. **多瓶颈叠加**:先解决根本瓶颈(`is_root_cause=true`),再处理衍生瓶颈
2. **用户指定关注重点**:该领域的方案提升一个优先级
3. **数据不足**:方案中标注"需进一步采集XX数据确认",建议补充诊断步骤
4. **技术栈未知**:给出通用方案,并提示"根据实际技术栈(Java/Go/Python等)调整具体步骤"

---

## 输出格式(严格JSON)

```json
{
"optimization_plan": [
{
"id": "OPT-001",
"priority": "P0/P1/P2/P3",
"title": "方案标题(简洁,<20字)",
"category": "C1/C2/C3/C4/C5/C6/C7",
"category_name": "类别全称",
"target_bottleneck_id": "BN-XXX",
"target_bottleneck_summary": "针对的瓶颈简述",
"description": {
"current_state": "当前问题描述",
"solution_steps": [
"步骤1:具体操作",
"步骤2:具体操作",
"步骤3:具体操作"
],
"key_configuration": {
"配置项": "建议值",
"说明": "配置说明"
}
},
"expected_improvement": {
"metric": "影响的指标",
"before": "优化前值(引用标准化数据)",
"after_expected": "预期优化后值(范围)",
"improvement_percent": "提升百分比范围"
},
"implementation": {
"effort": "低/中/高",
"estimated_duration": "预估工期(如:2-4小时、1-2天、1-2周)",
"team_requirement": "需要什么角色参与(如:DBA、后端开发、运维)"
},
"risk": {
"level": "低/中/高",
"description": "风险说明",
"rollback_plan": "回滚方案",
"mitigation": "风险缓解措施"
},
"prerequisites": ["前置条件1", "前置条件2"],
"dependencies": ["依赖的其他方案ID,如无则为空数组"],
"verification": {
"method": "验证方法(具体操作步骤)",
"success_criteria": "成功标准(量化)",
"regression_risk": "回归风险说明"
}
}
],
"quick_wins": {
"summary": "快速见效方案概要(1-2句话)",
"items": [
{
"id": "OPT-XXX",
"title": "方案标题",
"effort": "预估工时",
"expected_improvement": "预期效果"
}
]
},
"execution_roadmap": {
"phase_1_emergency": {
"timeline": "0-24小时",
"goal": "紧急止损",
"action_items": ["OPT-001", "OPT-002"]
},
"phase_2_quick_wins": {
"timeline": "1-3天",
"goal": "快速改善",
"action_items": ["OPT-003", "OPT-004"]
},
"phase_3_deep_optimization": {
"timeline": "1-2周",
"goal": "深度优化",
"action_items": ["OPT-005", "OPT-006"]
},
"phase_4_architecture": {
"timeline": "1-2月",
"goal": "架构升级",
"action_items": ["OPT-007"]
}
},
"estimated_total_improvement": {
"tps_improvement": "预期TPS提升范围(如:从185提升至350-450,提升90%-143%)",
"response_time_improvement": "预期响应时间改善",
"error_rate_target": "预期错误率降低到"
},
"assumptions_and_caveats": [
"假设1:说明",
"注意事项1:说明"
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
## 角色
你是一名性能测试报告撰写专家。

## 任务
将分析结果整合为结构化的性能测试分析报告。

## 输入
- 标准化数据:{{#1777286782207.text#}}
- 瓶颈分析:{{#1777288199008.text#}}
- 优化建议:{{#1777288893095.text#}}

## 输出格式(Markdown)

# 🔍 性能测试分析报告

## 一、测试概览
| 指标 | 目标值 | 实际值 | 达标情况 |
|------|--------|--------|----------|
| TPS | {{#1777286493293.target_tps#}} | {{actual_tps}} | ✅/❌ |
| 平均响应时间 | - | {{#1777286782207.structured_output.pressure_metrics.avg_response_time_ms#}}ms | - |
| P99响应时间 | - | {{#1777286782207.structured_output.pressure_metrics.p99_response_time_ms#}}ms | - |
| 错误率 | <0.1% | {{#1777286782207.structured_output.pressure_metrics.error_rate_percent#}}% | ✅/❌ |

## 二、资源使用概况
(表格展示各资源使用率及健康度)

## 三、瓶颈分析
### 首要瓶颈
(描述首要瓶颈及其证据链)

### 瓶颈链路
(描述瓶颈间的因果关系)

## 四、优化建议
### 🚀 快速见效(1-3天)
(优先级1-3的优化项)

### 🔧 中期优化(1-2周)
(优先级4-6的优化项)

### 🏗️ 长期规划(1月+)
(架构级优化项)

## 五、预期收益
(综合预期TPS提升及响应时间改善)

## 六、风险提示
(实施风险及回滚方案)

二、普罗米修斯性能分析智能体

普罗米修斯性能分析智能体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
app:
description: 性能分析智能体02
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: workflow
name: demo12-性能分析智能体02
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/deepseek:0.0.14@e7f88d74bf425ffc89d8794a33d581cceeaeec8d3b0091ccd5a5c2ff7c18c2a7
version: null
kind: app
version: 0.6.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
attachment_image_file_size_limit: 2
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
file_upload_limit: 20
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: http-request
id: 1765199107320-source-1765199154689-target
source: '1765199107320'
sourceHandle: source
target: '1765199154689'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: http-request
targetType: http-request
id: 1765199154689-source-1765199265813-target
source: '1765199154689'
sourceHandle: source
target: '1765199265813'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: http-request
targetType: llm
id: 1765199265813-source-1765199353474-target
source: '1765199265813'
sourceHandle: source
target: '1765199353474'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1765199353474-source-1765199555190-target
source: '1765199353474'
sourceHandle: source
target: '1765199555190'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- label: start_time
max_length: 48
options: []
required: true
type: text-input
variable: start_time
- label: end_time
max_length: 48
options: []
required: true
type: text-input
variable: end_time
height: 135
id: '1765199107320'
position:
x: 126
y: 140
positionAbsolute:
x: 126
y: 140
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
authorization:
config: null
type: no-auth
body:
data:
- id: key-value-39
key: ''
type: text
value: "{\n \"start_time\":\"{{#1765199107320.start_time#}}\",\n \"\
end_time\",\"{{#1765199107320.end_time#}}\",\n \"job_name\": \"agent\"\
\n}"
type: json
desc: ''
headers: Content-Type:application/json
method: post
params: ''
retry_config:
max_retries: 3
retry_enabled: true
retry_interval: 100
selected: false
ssl_verify: true
timeout:
max_connect_timeout: 0
max_read_timeout: 0
max_write_timeout: 0
title: 从普罗米修斯中获取操作系统指标
type: http-request
url: http://172.28.0.1:7100/prometheus
variables: []
height: 138
id: '1765199154689'
position:
x: 398
y: 140
positionAbsolute:
x: 398
y: 140
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
authorization:
config: null
type: no-auth
body:
data:
- id: key-value-209
key: ''
type: text
value: "{\n \"start_time\":\"{{#1765199107320.start_time#}}\",\n \"\
end_time\",\"{{#1765199107320.end_time#}}\",\n \"job_name\": \"jmeter\"\
\n}"
type: json
desc: ''
headers: Content-Type:application/json
method: post
params: ''
retry_config:
max_retries: 3
retry_enabled: true
retry_interval: 100
selected: false
ssl_verify: true
timeout:
max_connect_timeout: 0
max_read_timeout: 0
max_write_timeout: 0
title: 从普罗米修斯中获取JMeter压测数据
type: http-request
url: http://172.28.0.1:7100/prometheus
variables: []
height: 138
id: '1765199265813'
position:
x: 668
y: 140
positionAbsolute:
x: 668
y: 140
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
temperature: 0.7
mode: chat
name: deepseek-v4-flash
provider: langgenius/deepseek/deepseek
prompt_template:
- id: 4a11e268-19d1-42f1-a457-0329a2e56860
role: system
text: "# 背景说明\n以下是数据集说明:\n\n压测数据(存储在Prometheu中)\n来源:JMeter压测工具产生的TPS、响应时间、错误率等指标\n\
时间范围:[开始时间]至[结束时间]\n关键标签:transaction_name(事务名称)、status(成功/失败)、thread_count(并发用户数)\n\
监控数据(存储在Prometheus)\n服务器资源:CPU利用率、内存使用量、磁盘IO、网络带宽\n中间件指标:数据库连接池使用率、JVM堆内存、线程池状态\n\
自定义指标:无\n排除因素:无\n\n# 分析要求\n请按以下维度进行交叉关联分析:\n\n1. 性能指标分析\n绘制TPS趋势图,标注峰值和拐点\n\
统计各事务的响应时间分布(P50/P90/P99)\n分析错误率突变时段的具体错误类型占比\n\n2. 资源消耗分析\n识别CPU使用率超过[阈值]%的时段及持续时间\n\
绘制内存使用与JVM GC次数的时间序列对比图\n分析磁盘IO与TPS的相关系数\n\n3. 瓶颈关联分析\n当响应时间超过[阈值]ms时,服务器哪些指标出现异常波动?\n\
错误率突增时段是否伴随线程池满/数据库连接池耗尽?\n网络带宽使用率是否成为限制TPS增长的因素?\n\n4. 容量评估\n根据当前资源利用率推算最大承载容量\n\
找出最先达到资源瓶颈的组件(如CPU/内存/数据库)\n量化性能衰减拐点(如\"当并发超过500时,响应时间非线性增长\")\n\n5. 对比分析(如有多轮测试)\n\
对比版本迭代前后的关键指标变化\n分析配置调优前后的效果差异\n不同场景下的资源消耗模式对比\n\n# 输出格式要求\n请按照以下结构化格式输出:\n\
\n### 性能测试总结报告\n\n#### 一、整体概况\n- 测试周期:xx小时,总请求量:xx万\n- 成功率达到xx%,未通过场景说明:[具体场景]\n\
\n#### 二、关键发现(表格呈现)\n| 维度 | 观测指标 | 最大值 | 最小值 | 平均值 | 异常时段 |\n|---|---|---|---|---|---|\n\
| TPS | 支付接口 | 1200 | 800 | 980 | 14:30-14:45 |\n| ... | ... | ... | ...\
\ | ... | ... |\n\n#### 三、瓶颈分析\n1. **主要瓶颈**:[具体组件/服务]\n - 证据链:TPS下降时段\
\ → CPU利用率突破90% → 数据库慢查询增加\n2. **次要瓶颈**:[具体组件/服务]\n - 证据链:...\n\n####\
\ 四、优化建议(分级呈现)\n✅ 紧急修复:\n- 数据库连接池配置需从50调整为200\n- 增加Redis缓存命中率\n\n⚠️ 中期改进:\n\
- 对订单查询接口进行SQL优化\n- ...\n\n#### 五、容量评估结论\n- 当前配置最大支撑能力:xx TPS\n- 推荐扩容阈值:当并发用户达到xx时需水平扩展\n\
\n"
- id: a12dc86e-08eb-41c8-ae86-91fd81ff051e
role: user
text: "请基于以下数据生成性能测试总结报告:\n1. **数据源**:\n - 压测数据:{{#1765199265813.body#}}\n\
\ - 监控数据:{{#1765199154689.body#}}"
selected: false
title: 大模型进行性能分析
type: llm
variables: []
vision:
enabled: false
height: 88
id: '1765199353474'
position:
x: 120
y: 337
positionAbsolute:
x: 120
y: 337
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '1765199353474'
- text
value_type: string
variable: result
selected: true
title: 结束
type: end
height: 88
id: '1765199555190'
position:
x: 424
y: 337
positionAbsolute:
x: 424
y: 337
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 1
y: 2
zoom: 1
rag_pipeline_variables: []

三、Prometheus、Grafana安装

1. 安装Prometheus

1.下载Prometheus

Prometheus官网: (https://prometheus.io/download/#prometheus)

下载慢可以使用代理下载

1
wget https://github.com/prometheus/prometheus/releases/download/v3.8.0/prometheus-3.8.0.linux-amd64.tar.gz

2.解压

1
tar -zxvf prometheus-3.8.0.linux-amd64.tar.gz -C /usr/local/

3.重命名

1
2
cd /usr/local/
mv prometheus-3.8.0.linux-amd64 prometheus380

4.配置文件

可以通过修改配置文件来配置Prometheus

1
vi /usr/local/prometheus380/prometheus.yml

5.启动Prometheus

1
2
cd /usr/local/prometheus380/
nohup ./prometheus --config.file=prometheus.yml &

或者

1
/usr/local/prometheus380/prometheus --config.file=/usr/local/prometheus380/prometheus.yml &

运行结果:

1
2
[1] 346098
nohup: ignoring input and appending output to 'nohup.out'

6.访问Prometheus

浏览器打开 http://127.0.0.1:9090

2.Prometheus监控Linux性能(node-exporter)

1.下载node-exporter

Prometheus官网: (https://github.com/prometheus/node_exporter/releases)

下载慢可以使用代理下载

1
wget https://github.com/prometheus/node_exporter/releases/download/v1.11.1/node_exporter-1.11.1.linux-amd64.tar.gz

2.解压

1
tar -zxvf node_exporter-1.11.1.linux-amd64.tar.gz -C /usr/local/

3.重命名

1
2
cd /usr/local/
mv node_exporter-1.11.1.linux-amd64 node_exporter

4.启动node-exporter

node_exporter 启动后的端口为9100

1
2
cd /usr/local/node_exporter/
./node_exporter &

5.查看node-exporter状态

通过查看端口是否被占用,可以知道node-exporter是否启动成功

1
lsof -i:9100

6.访问node-exporter

浏览器打开 http://127.0.0.1:9100/metrics, 可以看到node-exporter的指标数据

7.配置Prometheus

  • 在配置 Prometheus 前需要关闭 node-exporter
1
2
ps -ef | grep node_exporter
kill -9 pid
  • 配置 Prometheus
1
vi /usr/local/prometheus380/prometheus.yml

添加如下内容

1
2
3
- job_name: 'node'
static_configs:
- targets: ['127.0.0.1:9100']

  • 修改prometheus.yml文件权限
1
chmod 777 /usr/local/prometheus380/prometheus.yml
  • 重启Prometheus 及 node-exporter
1
2
3
4
5
cd /usr/local/prometheus380/
./prometheus --config.file=prometheus.yml &

cd /usr/local/node_exporter/
./node_exporter &

3.安装Grafana

1.下载Grafana

grafana官网: (https://grafana.com/)

1
2
3
4
5
6
7
wget https://dl.grafana.com/grafana/release/13.0.1/grafana_13.0.1_24542347077_linux_amd64.tar.gz

tar -zxvf grafana_13.0.1_24542347077_linux_amd64.tar.gz -C /usr/local/

cd /usr/local/

mv grafana_13.0.1_24542347077_linux_amd64.tar.gz grafana-13.0.1

2.启动Grafana

  • 直接启动
1
2
cd /usr/local/grafana-13.0.1
./bin/grafana-server web
  • 后台启动
1
2
cd /usr/local/grafana-13.0.1
nohup ./bin/grafana-server web > grafana.log 2>&1 &

3.访问Grafana

浏览器打开 http://127.0.0.1:3000

  • 注意防火墙开启端口
  • 默认账户密码为 admin/admin

4.配置数据源

5.导入看板

看板下载: https://github.com/smart-doc-group/smart-doc-demo/blob/master/jmeter/grafana-template/jmeter-prometheus-14972.json

四、Jmeter Prometheus 插件安装与配置

1.下载Jmeter Prometheus 插件

2.安装Jmeter Prometheus 插件

将下载好的 jmeter-prometheus-plugin-0.7.1.jar 文件放到 Jmeter 的 lib/ext 文件夹下即可

3.配置Jmeter Prometheus 插件

JMeter 默认监听的IP地址是 127.0.0.1 ,默认会导致 Prometheus 无法连接到 JMeter Prometheus 的监听端口,
因此需要在 jmeter.properties 里加个配置 prometheus.ip=0.0.0.0

4.Jmeter 报告写入 Prometheus

1.添加 Prometheus 监听器

打开 JMeter 并选择测试计划,然后右键点击”测试计划” -> “添加” -> “监听器”-> Prometheus Listener

2.配置 Prometheus 监听器

help 列是 Prometheus 指标的元数据,用于在监控系统中(如 PrometheusUI/Grafana )解释指标含义,提升可读性。

3.配置 Prometheus

  • 在 Prometheus 的配置文件( prometheus.yml )中,添加一个新的 scrape_config 来从 JMeter Prometheus 插件中抓取数据
  • IP 是运行 JMeter 测试的机器的 IP 地址, 9270 是 JMeter Prometheus 插件的默认监听端口
1
2
3
4
scrape_configs:
- job_name: 'jmeter'
static_configs:
- targets: ['0.0.0.0:9270']

5.启动 Jmeter

为了方便验证,压测时线程组设置为“无限循环” ,可根据实际需求去调整

启动成功后,JMeter Prometheus 会默认在本地创建一个端口为 9270 的服务。
访问网址:http://localhost:9270/metrics 看到如下内容就说明成功了

6.Grafana 看板展示

1.模板下载

官方模板库地址: https://grafana.com/dashboards

在搜索框中,输入关键字 jmeter ,可以看到第一个就是: Apache JMeter Dashboard using Core InfluxdbBackendListenerClient

点击进入,下载模板对应的 json 文件到本地或者直接复制该模板的id

2.添加数据

1
2
3
4
http://192.168.10.160:30886
jmeter
admin
password

3.导入模板

4.数据展示