Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Troppi thread in Cloud Pub/Sub

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

By Joshua FoxJul 5, 20201 min read
Joshua Fox

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 page

In generale, qualche thread inattivo di troppo in Java non è un problema. Ma in un ambiente con risorse limitate, e soprattutto se il software ne utilizza già molti, un eccesso di thread aggiuntivi può sovraccaricare il sistema.

Google Cloud PubSub è un ottimo framework di comunicazione asincrona, noto per la sua leggerezza. Eppure, al primo utilizzo, il client Java di Google PubSub crea 60 thread che restano attivi in modo permanente. (Per visualizzarli tutti basta usare Thread.getAllStackTraces().keySet().) I thread aggiuntivi di PubSub servono per le operazioni asincrone legate alla pubblicazione dei messaggi.

Troppi thread

I thread sono utili per un publisher ad alto volume, ma per uno a basso volume 60 thread sono decisamente troppi.

L'API per impostare il numero di thread non fa parte dell'API ufficiale di PubSub, è poco documentata e piuttosto di basso livello. Ecco quindi come procedere.

1. Imposti setExecutorThreadCount su un valore basso, ad esempio 4 (o anche 1), come mostrato di seguito. In questo modo si riducono i thread di circa 40 unità.

2. Restano comunque una ventina di thread inattivi. Per ridurli, può seguire la procedura documentata da ajaaym su GitHub (codice qui sotto).

In pratica, crei Publisher, GrpcTransportProvider e ManagedChannelBuilder con un unico ExecutorProvider condiviso a singolo thread, così da aggiungere un solo thread complessivo per il Publisher di 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.