Skip to content

Firebase 9.4.2 Performance #1061

Description

@SmikeSix2

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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions