firebase / firebase/firebase-admin-java

Firebase 9.4.2 Performance

未关闭
#1,061 2 条评论 0 个 reaction 已指派 1 人 已被 @jonathanedey 认领 在 GitHub 查看
api: core
主要语言
Java
星标
620
派生
305
平均合并
3 小时 23 分钟
30 天内合并 PR
1

描述

Hi i had my own implementation of 9.3.0 with a costum http2 client using

public static HttpAsyncClientBuilder defaultHttpAsyncClientBuilder() {
PoolingAsyncClientConnectionManager connectionManager = new PoolingAsyncClientConnectionManager();
connectionManager.setMaxTotal(200);
connectionManager.setDefaultMaxPerRoute(100);
connectionManager.setDefaultConnectionConfig(ConnectionConfig.custom().setTimeToLive(-1L, TimeUnit.MILLISECONDS).build());
connectionManager.setDefaultTlsConfig(TlsConfig.custom().setVersionPolicy(HttpVersionPolicy.NEGOTIATE).build());
return HttpAsyncClientBuilder.create().setH2Config(H2Config.custom().setMaxConcurrentStreams(100).build()).
setHttp1Config(Http1Config.DEFAULT).setConnectionManager(connectionManager).
setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault())).disableRedirectHandling().disableAutomaticRetries();//
}

it reached up to 1.7 qps. to upper limit of what was possible, but there were rare server crashes, due too.. idk.

Now im using the latest version and no matter what i do, ill get like 180 qps max?

The default implementation of h2config uses 250 concurrent streams (shouldnt it be 100?). And the Reactor class uses cpu count IO Threads. So kinda 10.

Im now using this configuration, before the default from the wiki page.

def h2Config = H2Config.custom()
.setMaxConcurrentStreams(100)
.setInitialWindowSize(1048576 * 2)
// .setPushEnabled(false)
.build()

def ioReactorConfig = IOReactorConfig.custom()
.setIoThreadCount(Runtime.getRuntime().availableProcessors() * 2)
.setSoTimeout(Timeout.ofMilliseconds(60000))
.build()

def client = H2AsyncClientBuilder.create()
.setH2Config(h2Config)
.setIOReactorConfig(ioReactorConfig)
.disableRedirectHandling()
.disableAutomaticRetries()
.build()

options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(resource))
.setHttpTransport(new ApacheHttp2Transport(client))
.build()

So the latest firebase version sends at 1/10 of the original speed?

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。