Правильная настройка схемы независимой проверки healtcheck для несвязанного LDAP SK - PullRequest
0 голосов
/ 03 января 2019

Мои коллеги, поддерживающие нашу инфраструктуру LDAP, обратились ко мне сегодня, потому что мое приложение на основе UnboundID LDAP SDK установило слишком много соединений, хотя я использовал пул соединений.Саму проблему было довольно легко решить, потому что я установил неверное значение для возраста соединения, теперь я установил его на бесконечность.

pool.setMaxConnectionAgeMillis(0);
pool.setMaxDefunctReplacementConnectionAgeMillis(null);
pool.setMaxWaitTimeMillis(3000L);
pool.setHealthCheckIntervalMillis(10000L);

Я спросил себя, какая проверка работоспособности запускает SDK, и pool.getHealthCheck() сказал мнечто это com.unboundid.ldap.sdk.LDAPConnectionPoolHealthCheck, что - если я правильно понимаю документы - в основном является реализацией "по умолчанию в true", которая возвращает успех для всех проверок работоспособности.

Я видел, что SDKпредлагает следующие подклассы:

  • AggregateLDAPConnectionPoolHealthCheck

Но ни один из них, кажется, не делает низкий уровень и общую проверку.Они либо специфичны для определенных серверов LDAP (ReportBindResultLDAPConnectionPoolHealthCheck), либо выполняют дополнительные действия (PruneUnneededConnectionsLDAPConnectionPoolHealthCheck), либо зависят от определенной схемы LDAP (GetEntryLDAPConnectionPoolHealthCheck).То, что я ищу, - это что-то общее, например, SELECT 1 FROM DUAL будет работать на сервере Oracle SQL и работает на всех LDAP.

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

...