[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2010
    Beiträge
    14

    [Solved] AS/400->Microsoft SQL Server: JDBC getConnection langsam

    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.

  2. #2
    Registriert seit
    Dec 2005
    Beiträge
    276
    Hallo Klaus,

    ich würde auf DNS oder lokale Host Tabelle tippen.

    Wie sieht den ein TRCCNN für die schnelle und langsame Verbindung aus?

    MFG Zerberus
    MFG Zerberus

  3. #3
    Registriert seit
    Jun 2010
    Beiträge
    14
    Hallo Zerberus,

    TRCCNN habe ich noch nicht probiert, aber es gibt ein Wireshark-Protokoll für eine langsame Verbindung, Ausschnitt hier: http://www.comsid.de/wireshark.txt

    Bemerkenswert ist die lange Pause zwischen Frame 30 und Frame 31. Der Client schickt Daten, wartet 16 Sekunden und schickt wieder Daten. Was macht der in den 16 Sekunden?

    Sieht man sich den JDBC-Trace an, könnte man vermuten, er braucht die 16 Sekunden, um den SSL-Socket zu erzeugen, über den dann Frame 31 gesendet wird?

    Viele Grüße,
    Klaus

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... ist der zweite connect im selben Job genauso langsam?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Jun 2010
    Beiträge
    14
    Hallo,

    ja, d.h. jein. ;-) Der erste Connect in einem frischen Job dauert ca. 30 Sekunden. Da sind dann die 15 Java-Gedenksekunden zum Starten der JVM dabei.

    Alle weiteren Connects bei im Job geladener JVM dauern dann so 15 Sekunden.

    Viele Grüße,
    Klaus Mödinger

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... hast Du die DNS config mal überprüft? CFGTCP dann Auswahl 10 und 12 (zweite Seite beachten) und die eingetragenen Adressen pingen.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Jun 2010
    Beiträge
    14
    Hallo Dieter,

    da war als zweiter DNS-Server in der Tat ein Quatsch aus der Vergangenheit drin. Den habe ich rausgeschmissen. Hilft aber leider auch nix.

    Viele Grüße,
    Klaus Mödinger

  8. #8
    Registriert seit
    Jun 2010
    Beiträge
    14
    Hallo,

    Zerberus77' Nase lag goldrichtig. Es war in der Tat ein DNS-Problem.

    Irgendwas ist an unserem Router doof. ;-) Und an einem DNS-Server an einer Kundenlokation.

    Ich habe auf der IBM i als einzigen DNS-Server Googles 8.8.8.8 eingetragen - und siehe da: läuft alles flott. Mit wem Microsoft da sonst noch telefonieren möchte, bekäme man vermutlich mit TRCCNN raus.

    Vielen Dank nochmals für eure Antworten!

    Schönen Gruß,
    Klaus

Similar Threads

  1. Antworten: 0
    Letzter Beitrag: 13-05-03, 08:47
  2. Lotus Domino DECS und Microsoft Access
    By Rainer_Brandl in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 08-04-03, 17:57
  3. SCO bietet kostengünstige Alternative zu Microsoft Exchange
    By Kirsten Steer in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 04-11-02, 10:50
  4. DB/400 Verbindung via JDBC
    By Jacko in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 05-06-02, 11:50
  5. Antworten: 1
    Letzter Beitrag: 16-12-01, 21:22

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •