Как получить количество использованных (и бесплатных) подключений к MongoDB (с точки зрения клиента)? - PullRequest
0 голосов
/ 12 апреля 2020

Я выкладываю здесь вопрос только для того, чтобы убедиться, что я не лаю не на то дерево.

Как получить количество соединений используется бесплатно ) для MongoDB, но с точки зрения клиента (например, Java клиент), используя драйвер 4.x?

Есть сообщения, касающиеся использования serverStatus ( Получите число открытых соединений в mongoDB, используя java), но это предполагает наличие доступа администратора к MongoDB. Использование «обычного пользователя» (пользователя БД с более низкими привилегиями (например, доступ только к одной базе данных)) не может запустить serverStatus (). Но это обеспечивает только представление со стороны сервера (есть N соединений с IP x ).

В других публикациях упоминалось, как настроить размер пула соединений ( например, с использованием MongoClients.create​(MongoClientSettings settings) (см. справку по API 4.x (https://mongodb.github.io/mongo-java-driver/4.0/apidocs/mongodb-driver-sync/com/mongodb/client/MongoClients.html)):

        MongoCredential credential = MongoCredential.createCredential(
                    username,
                    "admin",
                    password.toCharArray());

        MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder()
                .applyToClusterSettings(
                        builder -> builder.hosts(Arrays.asList(new ServerAddress(hostname, portNumber))))
                .credential(credential)
                .applyToConnectionPoolSettings(builder -> builder
                                                                .minSize(connectionPoolMinimumSize)
                                                                .maxSize(connectionPoolMaximumSize))
                .readConcern(readConcern)
                .readPreference(readPreference)
                .writeConcern(writeConcern)
                .build());

Но ни один из указанных способов не означает использование используемых и доступных соединений в соединении pool.

Как упомянул Олег, было бы целесообразно использовать ConnectionPoolListener, но он доступен только в драйверах 3.x. Методы ConnectionPoolListener помечены как устаревшие в 4.x (хотя это все еще упоминается в разделе мониторинга JMX (http://mongodb.github.io/mongo-java-driver/4.0/driver-reactive/reference/monitoring/).

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать мониторинг пула соединений, который описан здесь , чтобы отслеживать состояния соединений и выводить подсчеты, которые вы ищете.

Я не знаю, если Java драйвер выставляет счетчики, которые вы ищете, как API publi c; многие водители этого не делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...