Контролировать глобальный контекст выполнения - PullRequest
0 голосов
/ 22 октября 2018

давайте предположим, что у меня есть большая система, которая использует Scala Global Execution Context во многих местах для выполнения различных Фьючерсов.И однажды в этой системе произошла проблема с производительностью (анализ дампа памяти показал, что причиной было слишком много Futures в GEC).Я быстро нашел причину, потому что мне повезло, но это вызвало то, что я начал думать о возможностях контролировать состояние контекстов выполнения.

Это не легко, и я не могу найти статьи на эту тему.Я взломал GEC, и теперь он предоставляет несколько параметров через JMX (QueuedSubmissionCount, QueuedCount и т. Д.), Но этого все еще недостаточно, чтобы сказать, какой класс вызвал утечку.

Я подумал о пользовательской оболочке для контекста выполнения, которая будет принимать дополнительный идентификатор (имя класса или что-то в этом роде) и подсчитывать количество фьючерсов на идентификатор.Но я считаю, что у многих программистов одна и та же проблема, и, может быть, у вас есть идея получше?

...