apache / apache/servicecomb-java-chassis

自定义Filter存在未知的耗时

Aperta
#3,699 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
1.9k
Fork
814
Merge medio
8g 23h
PR unite (30g)
1

Descrizione

问题:环境上发现server filters request存在夸张的耗时
![image](https://user-images.githubusercontent.com/32447408/224593747-96e7698a-9ca1-4a21-9f3a-a1fcd17f29da.png)

定位:使用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执行有额外的耗时。

请问下像这种执行耗时问题有什么好的定位方法吗?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia con il percorso della richiesta server-filter segnalato e riproducilo in condizioni di elevata concorrenza, registrando al contempo l'output della CPU e delle tracce di Arthas. Confronta gli esempi relativi a authenticate, parseToken, alla costruzione di CommonMetadata, Math.abs e applyTimestamp; il lavoro è completato quando viene identificata la fonte della latenza aggiuntiva e viene documentata una conclusione diagnostica concreta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
backend, performance
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.