apache / apache/servicecomb-java-chassis
自定义Filter存在未知的耗时
- 主要语言
- Java
- 星标
- 1.9k
- 派生
- 814
- 平均合并
- 8 天 23 小时
- 30 天内合并 PR
- 1
描述
问题:环境上发现server filters request存在夸张的耗时

定位:使用arthas的trace命令抓取某一个的filter耗时,发现耗时会存在不同的地方,比如new 对象、普通对象的set方法,或者方法调用
1)
+---[99.94% 177.84957ms ] xxx:authenticate()
| `---[0.04% 0.071806ms ] xxx:authenticate()
| +---[1.02% 7.31E-4ms ] xxx:getContext()
2)
| +---[99.99% 245.681214ms ] xxx:parseToken()
| | `---[100.00% 245.676919ms ] xxx:parseToken()
| | +---[0.00% 6.23E-4ms ] java.util.Map:get()
| | +---[99.97% 245.595983ms ] xxx.CommonMetadata:()
3)
| | +---[37.90% 11.693914ms ] java.lang.Math:abs()
4)
+---[99.80% 47.11804ms ] xxx:applyTimestamp()
规律:高并发场景下,CPU增高,基本上会导致Filter执行有额外的耗时。
请问下像这种执行耗时问题有什么好的定位方法吗?
贡献指南
这个仓库没有索引到贡献指南
调研方向
从已报告的 server-filter 请求路径开始,在高并发条件下重现该路径,同时记录 CPU 和 Arthas trace 输出。比较 authenticate、parseToken、CommonMetadata 构造、Math.abs 和 applyTimestamp 附近的示例;完成的标准是找出额外延迟的来源,并记录一个具体的诊断结论。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- backend, performance
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100