You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关闭Vert.x内部指标以提升应用性能?

关闭Vert.x内部Micrometer指标优化性能

Vert.x默认集成了Micrometer做指标收集,你看到的大量io.micrometer.core.instrument.ImmutableTag实例,就是Vert.x内部组件(比如Web Client)生成指标标签时带来的开销。以下是几种关闭或过滤这些内部指标的方法:

1. 全局禁用所有Vert.x指标

如果完全不需要Vert.x的内部指标,直接关闭整个Micrometer集成:

Vertx vertx = Vertx.vertx(new VertxOptions()
    .setMicrometerMetricsOptions(new MicrometerMetricsOptions()
        .setEnabled(false)));

2. 禁用指定组件的指标

要是还想保留部分指标,只关闭产生大量开销的组件(比如HTTP客户端),可以通过disabledMetricsCategories精准控制:

Vertx vertx = Vertx.vertx(new VertxOptions()
    .setMicrometerMetricsOptions(new MicrometerMetricsOptions()
        .setEnabled(true)
        .addDisabledMetricsCategory(MetricsCategory.HTTP_CLIENT)));

常用的禁用类别包括:

  • HTTP_SERVER:HTTP服务端指标
  • HTTP_CLIENT:HTTP客户端(Web Client)指标
  • TCP_SERVER/TCP_CLIENT:TCP相关指标
  • EVENT_LOOP/WORKER_POOL:线程池相关指标

3. 精细过滤特定指标

需要更细粒度控制的话,自定义MeterFilter过滤掉特定名称或标签的指标:

MeterRegistry registry = new SimpleMeterRegistry();
registry.config().meterFilter(new MeterFilter() {
    @Override
    public MeterFilterReply accept(Meter.Id id) {
        // 拒绝所有Vert.x HTTP客户端相关指标
        if (id.getName().startsWith("vertx.http.client")) {
            return MeterFilterReply.DENY;
        }
        return MeterFilterReply.ACCEPT;
    }
});

Vertx vertx = Vertx.vertx(new VertxOptions()
    .setMicrometerMetricsOptions(new MicrometerMetricsOptions()
        .setEnabled(true)
        .setMeterRegistry(registry)));

修改配置后,重新用JFR分析,就能看到ImmutableTag的生成量大幅下降,应用性能也会相应提升。

内容的提问来源于stack exchange,提问作者Alexey Surovenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:54:59