apache / apache/servicecomb-java-chassis

[BUG] - 频繁获取不存在配置导致性能劣化

オープン
#4,905 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Java
スター
1.9k
フォーク
814
平均マージ
8日 23時間
マージ済み PR(30日)
1

説明

### Steps to Reproduce

servicecomb3.2.2版本问题,性能劣化,火焰图分析:
org.apache.servicecomb.router.custom.RouterServerListFilter#enabled,
org.apache.servicecomb.loadbalance.LoadBalanceFilter#getOrCreateLoadBalancer调用org.apache.servicecomb.loadbalance.Configuration#getRuleStrategyName,
org.apache.servicecomb.loadbalance.filter.ZoneAwareDiscoveryFilter#enabled,
org.apache.servicecomb.registry.discovery.InstanceStatusDiscoveryFilter#enabled,
org.apache.servicecomb.core.invocation.InvocationFactory#setSrcMicroservice调用readServiceName(),每次consumer调用都要重复去spring获取上面五个属性,导致consumer操作CPU消耗比2.X多近10倍

### Expected Behavior

_No response_

### Servicecomb Version

_No response_

### Additional Context

_No response_

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

まず、RouterServerListFilter#enabled、LoadBalanceFilter#getOrCreateLoadBalancer、Configuration#getRuleStrategyName、ZoneAwareDiscoveryFilter#enabled、InstanceStatusDiscoveryFilter#enabled、InvocationFactory#setSrcMicroservice/readServiceName を通る呼び出しごとのパスを追跡します。プロファイリングまたは対象を絞ったテストを使用して、5つのプロパティが Spring から繰り返し取得されているかを検証します。報告された consumer の CPU 回帰が解消され、影響を受ける動作が引き続きテストでカバーされていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
backend, performance
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。