Cloud Intelligence™
Threads em excesso no Cloud Pub/Sub
Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.
About Joshua Fox
Joshua Fox has been a software architect in innovative technology companies for 20 years. Now, he advises tech startups and growth companies on architecture and cost optimization for Google Cloud Platform and Amazon Web Services; also publishing articles, and speaking to cloud engineers.
He has a PhD from Harvard University and a BA in math from Brandeis.
My personal pageEm geral, threads inativas a mais em Java não são problema. Mas em um ambiente com recursos limitados, e principalmente se o seu software já usa muitas threads, threads extras em excesso podem sobrecarregar o sistema.
O Google Cloud PubSub é um excelente framework de comunicação assíncrona, conhecido por ser leve. Ainda assim, logo no primeiro uso, o cliente Java do Google PubSub cria 60 threads que ficam ativas permanentemente. (Você pode ver todas as threads com Thread.getAllStackTraces().keySet().) Essas threads extras do PubSub são usadas em operações assíncronas durante a publicação de mensagens.

Threads demais
As threads são úteis em um publisher de alto volume; mas, para um publisher de baixo volume, 60 threads é muito mais do que o necessário.
A API para definir o número de threads não faz parte da API oficial do PubSub, é pouco documentada e bem baixo nível. Então, veja como resolver isso.
1. Defina setExecutorThreadCount com um número pequeno, como 4 (ou até 1), conforme abaixo. Isso reduz o número de threads em cerca de 40.
2. Ainda assim, sobram cerca de 20 threads inativas. Você pode reduzi-las conforme documentado pelo ajaaym no GitHub (código abaixo).
Aqui, você cria o Publisher, o GrpcTransportProvider e o ManagedChannelBuilder com um único ExecutorProvider compartilhado de uma só thread, de modo que, no total, apenas uma thread seja adicionada para o Publisher do PubSub.
PerfectScale™ for Kubernetes
Ready to optimize?
Get your free Kubernetes savings analysis

Your cloud bill shouldn't be a mystery
Optimization, automation, expertise. In one platform.