Cloud Intelligence™
Trop de threads dans Cloud Pub/Sub
Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.
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 pageEn général, les threads inactifs supplémentaires en Java ne posent pas de problème. Mais dans un environnement aux ressources limitées, et plus particulièrement si votre logiciel utilise déjà beaucoup de threads, un trop grand nombre de threads supplémentaires peut surcharger le système.
Google Cloud PubSub est un excellent framework de communication asynchrone, réputé pour sa légèreté. Pourtant, dès la première utilisation, le client Java de Google PubSub crée 60 threads qui restent actifs en permanence. (Vous pouvez visualiser l'ensemble des threads via Thread.getAllStackTraces().keySet().) Ces threads supplémentaires servent aux opérations asynchrones liées à la publication de messages.

Trop de threads
Ces threads s'avèrent utiles pour un publisher à fort volume ; en revanche, pour un publisher à faible volume, 60 threads, c'est largement excessif.
L'API qui permet de définir le nombre de threads ne fait pas partie de l'API officielle de PubSub, reste peu documentée et plutôt bas niveau. Voici donc la marche à suivre.
1. Définissez setExecutorThreadCount sur une petite valeur, par exemple 4 (voire 1), comme ci-dessous. Cela réduit le nombre de threads d'environ 40.
2. Il reste alors une vingtaine de threads inactifs. Vous pouvez les réduire selon la méthode documentée par ajaaym sur GitHub (code ci-dessous).
Ici, vous créez vos Publisher, GrpcTransportProvider et ManagedChannelBuilder avec un unique ExecutorProvider partagé à un seul thread, de sorte qu'un seul thread soit ajouté au total pour le PubSub Publisher.
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.