Klaus Mödinger
26-07-17, 12:21
Hallo,
ich verbinde mich via JDBC mit einem SQL Server SQLEXPRESS 64Bit, Version 11.0.6248.0 auf Windows Server 2012 R2.
Clients sind diverse IBM i (AS/400) V7R2 mit Java 1.71. JDBC-Treiber ist sqljdbc41.jar von Microsoft.
Auf fast allen IBM i dauert DriverManager.getConnection ca. 15 Sekunden. :-(
Es gibt *eine* IBM i-Umgebung, auf der die Verbindungsaufnahme flott funktioniert.
Hier Ausschnitte aus zwei JDBC-Traces:
Langsame Performance:
21.07.2017 11:11:46 com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
MAXIMAL: TDSChannel (ConnectionID:1) Creating SSL socket
21.07.2017 11:12:03 com.microsoft.sqlserver.jdbc.TDSChannel$ProxySocke t getInputStream
Normale Performance:
21.07.2017 11:14:11 com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
MAXIMAL: TDSChannel (ConnectionID:1) Creating SSL socket
21.07.2017 11:14:12 com.microsoft.sqlserver.jdbc.TDSChannel$ProxySocke t getInputStream
Im schlechteren Fall dauert das Erzeugen eines SSL-Sockets offenbar über 15 Sekunden.
Woran könnte das liegen?
PS: Dieser Java-Vierzeiler erzeugt einen SSL-Socket in allen Umgebungen schnell:
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
logLine("Creating ssl socket ...");
SSLSocket soc = (SSLSocket) factory.createSocket();
logLine("Ssl socket created!");
PS2: Abstellen von SSL im Connection String mit encrypt=false hilft nichts,
da die Verbindungsaufnahme trotzdem mit SSL läuft.
PS3: Das File java.security ist auf allen IBM i identisch.
PS4: Mit dem jtds-Treiber gibt es dasselbe Performance-Problem.
ich verbinde mich via JDBC mit einem SQL Server SQLEXPRESS 64Bit, Version 11.0.6248.0 auf Windows Server 2012 R2.
Clients sind diverse IBM i (AS/400) V7R2 mit Java 1.71. JDBC-Treiber ist sqljdbc41.jar von Microsoft.
Auf fast allen IBM i dauert DriverManager.getConnection ca. 15 Sekunden. :-(
Es gibt *eine* IBM i-Umgebung, auf der die Verbindungsaufnahme flott funktioniert.
Hier Ausschnitte aus zwei JDBC-Traces:
Langsame Performance:
21.07.2017 11:11:46 com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
MAXIMAL: TDSChannel (ConnectionID:1) Creating SSL socket
21.07.2017 11:12:03 com.microsoft.sqlserver.jdbc.TDSChannel$ProxySocke t getInputStream
Normale Performance:
21.07.2017 11:14:11 com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
MAXIMAL: TDSChannel (ConnectionID:1) Creating SSL socket
21.07.2017 11:14:12 com.microsoft.sqlserver.jdbc.TDSChannel$ProxySocke t getInputStream
Im schlechteren Fall dauert das Erzeugen eines SSL-Sockets offenbar über 15 Sekunden.
Woran könnte das liegen?
PS: Dieser Java-Vierzeiler erzeugt einen SSL-Socket in allen Umgebungen schnell:
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
logLine("Creating ssl socket ...");
SSLSocket soc = (SSLSocket) factory.createSocket();
logLine("Ssl socket created!");
PS2: Abstellen von SSL im Connection String mit encrypt=false hilft nichts,
da die Verbindungsaufnahme trotzdem mit SSL läuft.
PS3: Das File java.security ist auf allen IBM i identisch.
PS4: Mit dem jtds-Treiber gibt es dasselbe Performance-Problem.