При подключении к базе данных SQL Server с ошибкой Microsoft JDBC появляется следующая ошибка:
com.microsoft.sqlserver.jdbc.SQLServerException: драйвер не смог установить безопасное соединение с SQL Server с использованием шифрования Secure Sockets Layer (SSL). Ошибка: "SQL Server вернул неполный ответ. Соединение было закрыто. ClientConnectionId: 98d0b6f4-f3ca-4683-939e-7c0a0fca5931".
Недавно мы обновили наши приложения с Java 6 и Java 7 до Java 8. На всех системах под управлением Java работают SUSE Linux Enterprise Server 11 (x86_64), VERSION = 11, PATCHLEVEL = 3.
Вот факты, которые я собрал с помощью программы Java, которую я написал, которая просто последовательно открывается и закрывает 1000 соединений с базой данных.
- Связи отбрасываются с этой ошибкой примерно на 5% -10% времени. Ошибка не возникает при каждом подключении.
- Проблема ТОЛЬКО возникает с Java 8. Я запускал ту же программу на Java 7, и проблема не воспроизводима. Это соответствует нашему опыту в производстве до обновления. У нас были нулевые проблемы, запущенные под Java 7 в производстве.
- Проблема не возникает на всех наших Linux-серверах под управлением Java 8, это происходит только на некоторых из них. Это меня озадачивает, но когда я запускаю одну и ту же тестовую программу на той же версии Linux JVM (1.8.0_60, 64 бит) в разных экземплярах Linux, проблема не возникает в одном из экземпляров Linux, но проблема происходит на других. В экземплярах Linux работает одна и та же версия SUSE, и они находятся на одном уровне исправлений.
- Проблема возникает при подключении к серверам/базам данных BOTH SQL Server 2008 и SQL Server 2014.
- Проблема возникает независимо от того, использую ли я версию 4.0 JDBC для SQL Server или версию версии 4.1 для версии 4.0.
То, что делает мои наблюдения уникальными по сравнению с другими в Интернете, заключается в том, что хотя проблема происходит ТОЛЬКО на Java 8, я не могу решить эту проблему на одном из кажущихся идентичными Linux-серверов, на которых работает тот же Java 8 JVM. Другие люди также видели эту проблему в более ранних версиях Java, но это не наш опыт.
Любые ввод, предложения или наблюдения, которые вы, возможно, цените.