hippo4j
hippo4j copied to clipboard
[Enhancement] ThreadPoolAdapterState related optimization
Demand advice
Please answer these questions before submitting them. Thank you.
Is your function request related to the problem?
是的
Describe the function you want
目前适配器线程池的运行数据采集意义不大,目前了解到是因为有些框架线程API加了锁,会影响性能,所以没采集。
我们项目内部使用适配器线程大多是自己重写适配器来满足适配,我们可以自己植入线程池当时的运行状况数据到ThreadPoolAdapterState对象当中,但目前ThreadPoolAdapterState对象无预留字段,如果我们要达到目的,需要更改client的ThreadPoolAdapterState增加参数、填充参数数据,并且在AdapterThreadPoolMicrometerMonitorHandler实现上,把数据上报,对客户端重新打包。
是否hippo可以预留这部分参数,并且在AdapterThreadPoolMicrometerMonitorHandler数据上报。这样我们只需要修改适配器注入自己的bean就可以
我理解一下,你们现在遇到的问题是:
- 像
getActiveCount
这样的数据由于考虑到性能问题所以没有进行采集,但是你们可能确实又需要,因此你们想要通过实现自己的ThreadPoolAdapter
解决这个问题; - 由于
ThreadPoolAdapterState
没有预留此类参数属性,因此光替换Adapter
不能解决问题,你们还需要额外的修改并替换ThreadPoolAdapterState
,然后修改AdapterThreadPoolMicrometerMonitorHandler
以便上报其他参数;
所以你们希望:如果要新增指标字段,最好可以不需要替换 ThreadPoolAdapterState
实现,也不需要修改 AdapterThreadPoolMicrometerMonitorHandler
?
由于hippo提供的适配器不太适合我们,所以ThreadPoolAdapter是我们自己实现的注入的。 目前我们希望是:ThreadPoolAdapterState这个类预留一些字段,并且在AdapterThreadPoolMicrometerMonitorHandler里把预留的字段也上报一下(由hippo这边实现,我们不更改hippo的代码)。这样我们只需要更改我们的适配器,将信息填充到ThreadPoolAdapterState里面,就可以上报了吧?@ Createsequence
由于hippo提供的适配器不太适合我们,所以ThreadPoolAdapter是我们自己实现的注入的。 目前我们希望是:ThreadPoolAdapterState这个类预留一些字段,并且在AdapterThreadPoolMicrometerMonitorHandler里把预留的字段也上报一下(由hippo这边实现,我们不更改hippo的代码)。这样我们只需要更改我们的适配器,将信息填充到ThreadPoolAdapterState里面,就可以上报了吧?@ Createsequence
我理解了,这样的话,是不是最好 ThreadPoolAdapterState
可以支持动态字段,然后 AdapterThreadPoolMicrometerMonitorHandler
可以自动将全部有值的属性都上报?不知你们这边是否已经有方案呢,有兴趣也可以提个 PR 。
由于hippo提供的适配器不太适合我们,所以ThreadPoolAdapter是我们自己实现的注入的。 目前我们希望是:ThreadPoolAdapterState这个类预留一些字段,并且在AdapterThreadPoolMicrometerMonitorHandler里把预留的字段也上报一下(由hippo这边实现,我们不更改hippo的代码)。这样我们只需要更改我们的适配器,将信息填充到ThreadPoolAdapterState里面,就可以上报了吧?@ Createsequence
我理解了,这样的话,是不是最好
ThreadPoolAdapterState
可以支持动态字段,然后AdapterThreadPoolMicrometerMonitorHandler
可以自动将全部有值的属性都上报?不知你们这边是否已经有方案呢,有兴趣也可以提个 PR 。
好的,之后的java-agent版本会有1.5.0
PR的内容吗?
我们会尽可能的保留原有的功能,不过目前也不能完全保证不会因为代码调整导致部分功能无法兼容。 @zjHe