Правильная настройка схемы независимой проверки healtcheck для несвязанного LDAP SK
Мои коллеги, поддерживающие нашу инфраструктуру LDAP, обратились ко мне сегодня, потому что мое приложение на основе UnboundID LDAP SDK установило слишком много соединений, хотя я использовал пул соединений. Саму проблему было довольно легко решить, потому что я установил неверное значение для возраста соединения, теперь я установил его на бесконечность.
pool.setMaxConnectionAgeMillis(0);
pool.setMaxDefunctReplacementConnectionAgeMillis(null);
pool.setMaxWaitTimeMillis(3000L);
pool.setHealthCheckIntervalMillis(10000L);
Я спросил себя, какая проверка здоровья запускает SDK и pool.getHealthCheck()
сказал мне, что это com.unboundid.ldap.sdk.LDAPConnectionPoolHealthCheck
которая - если я правильно понимаю документы - в основном является реализацией "по умолчанию", которая возвращает успех для всех проверок работоспособности.
Я видел, что SDK предлагает эти подклассы:
- AggregateLDAPConnectionPoolHealthCheck
- GetEntryLDAPConnectionPoolHealthCheck
- PasswordExpirationLDAPConnectionPoolHealthCheck
- PruneUnneededConnectionsLDAPConnectionPoolHealthCheck
- ReportBindResultLDAPConnectionPoolHealthCheck
Но ни один из них, кажется, не делает низкого уровня и не выполняет общую проверку. Они либо специфичны для определенных серверов LDAP (ReportBindResultLDAPConnectionPoolHealthCheck
), делать дополнительные вещи (PruneUnneededConnectionsLDAPConnectionPoolHealthCheck
) или зависеть от определенной схемы LDAP (GetEntryLDAPConnectionPoolHealthCheck
). Я ищу что-то общее SELECT 1 FROM DUAL
будет делать на сервере Oracle SQL и работает на всех LDAP.
Я даже спросил себя, могу ли я придерживаться стандартной проверки работоспособности, увеличить интервал проверки работоспособности и полагаться исключительно на триггеры проверки SDK, когда он использует соединение в пуле.