Hi, Well, it looks like getHostByAddr is slow, but I'm afraid there is nothing I could do about that, because it's called within the SSL stack, so outside of the control of H2.
Regards, Thomas On Sun, Mar 13, 2011 at 9:28 PM, Cedric <[email protected]> wrote: > Thanks for the answer, it was very helpfull! The time it takes to > connect is indeed much smaller when using TCP (5s instead of 20s). > This is what I wanted, but it would be nice if this could be achieved > with SSL. I have used the profiler in my java code and it gave the > following results: > > --------------------------------------------------------------------------- > Using SSL: > Profiler: top 3 stack trace(s) of 22746 ms [build-147]: > 564/1232 > at java.net.Inet6AddressImpl.getHostByAddr(Native Method) > at java.net.InetAddress$1.getHostByAddr(InetAddress.java:854) > at java.net.InetAddress.getHostFromNameService(InetAddress.java:534) > at java.net.InetAddress.getHostName(InetAddress.java:477) > at java.net.InetAddress.getHostName(InetAddress.java:449) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.getHost(SSLSocketImpl.java: > 1851) > at com.sun.net.ssl.internal.ssl.Handshaker.getHostSE(Handshaker.java: > 257) > at > com.sun.net.ssl.internal.ssl.ClientHandshaker.getKickstartMessage(ClientHandshaker.java: > 1020) > at com.sun.net.ssl.internal.ssl.Handshaker.kickstart(Handshaker.java: > 620) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.kickstartHandshake(SSLSocketImpl.java: > 1240) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java: > 1137) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java: > 632) > at > com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java: > 59) > at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java: > 65) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) > at java.io.DataOutputStream.flush(DataOutputStream.java:106) > at org.h2.value.Transfer.flush(Transfer.java:89) > at org.h2.engine.SessionRemote.done(SessionRemote.java:535) > at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:109) > at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:376) > at > org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java: > 271) > at org.h2.engine.SessionRemote.createSession(SessionRemote.java:265) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94) > at org.h2.Driver.connect(Driver.java:72) > at java.sql.DriverManager.getConnection(DriverManager.java:582) > at java.sql.DriverManager.getConnection(DriverManager.java:154) > at > org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java: > 98) > at > org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java: > 162) > at > org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java: > 327) > at > org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java: > 295) > at > org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java: > 415) > 275/1232 > at java.net.Inet6AddressImpl.getHostByAddr(Native Method) > at java.net.InetAddress$1.getHostByAddr(InetAddress.java:854) > at java.net.InetAddress.getHostFromNameService(InetAddress.java:534) > at java.net.InetAddress.getHostName(InetAddress.java:477) > at java.net.InetAddress.getHostName(InetAddress.java:449) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.getHost(SSLSocketImpl.java: > 1851) > at com.sun.net.ssl.internal.ssl.Handshaker.getHostSE(Handshaker.java: > 257) > at > com.sun.net.ssl.internal.ssl.ClientHandshaker.getKickstartMessage(ClientHandshaker.java: > 1020) > at com.sun.net.ssl.internal.ssl.Handshaker.kickstart(Handshaker.java: > 620) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.kickstartHandshake(SSLSocketImpl.java: > 1240) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java: > 1137) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java: > 632) > at > com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java: > 59) > at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java: > 65) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) > at java.io.DataOutputStream.flush(DataOutputStream.java:106) > at org.h2.value.Transfer.flush(Transfer.java:89) > at org.h2.engine.SessionRemote.done(SessionRemote.java:535) > at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:109) > at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:376) > at > org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java: > 271) > at org.h2.engine.SessionRemote.createSession(SessionRemote.java:265) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94) > at org.h2.Driver.connect(Driver.java:72) > at java.sql.DriverManager.getConnection(DriverManager.java:582) > at java.sql.DriverManager.getConnection(DriverManager.java:154) > at > org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java: > 98) > at > org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java: > 162) > at > org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java: > 584) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java: > 228) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java: > 369) > 130/1232 > at java.net.PlainSocketImpl.socketConnect(Native Method) > at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) > at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) > at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) > at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) > at java.net.Socket.connect(Socket.java:529) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java: > 559) > at org.h2.security.CipherFactory.createSocket(CipherFactory.java:98) > at org.h2.util.NetUtils.createSocket(NetUtils.java:106) > at org.h2.util.NetUtils.createSocket(NetUtils.java:91) > at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:91) > at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:376) > at > org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java: > 271) > at org.h2.engine.SessionRemote.createSession(SessionRemote.java:265) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94) > at org.h2.Driver.connect(Driver.java:72) > at java.sql.DriverManager.getConnection(DriverManager.java:582) > at java.sql.DriverManager.getConnection(DriverManager.java:154) > at > org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java: > 98) > at > org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java: > 162) > at > org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java: > 327) > at > org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java: > 295) > at > org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java: > 415) > at > org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java: > 155) > at > org.eclipse.persistence.sessions.server.ConnectionPool.startUp(ConnectionPool.java: > 433) > at > org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java: > 500) > at > org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java: > 619) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java: > 228) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java: > 369) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java: > 151) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java: > 207) > . > > --------------------------------------------------------------------------- > Using regular TCP: > Profiler: top 3 stack trace(s) of 4977 ms [build-147]: > 10/283 > at java.util.zip.Inflater.inflateBytes(Native Method) > at java.util.zip.Inflater.inflate(Inflater.java:238) > at java.util.zip.InflaterInputStream.read(InflaterInputStream.java: > 135) > at java.io.BufferedInputStream.read1(BufferedInputStream.java:256) > at java.io.BufferedInputStream.read(BufferedInputStream.java:317) > at javax.crypto.SunJCE_c.b(DashoA13*..) > at javax.crypto.SunJCE_c.a(DashoA13*..) > at javax.crypto.SunJCE_b.a(DashoA13*..) > at javax.crypto.SunJCE_h.a(DashoA13*..) > at javax.crypto.Cipher.c(DashoA13*..) > at javax.crypto.Cipher.b(DashoA13*..) > at javax.crypto.Cipher.a(DashoA13*..) > at javax.crypto.Cipher.init(DashoA13*..) > at > org.eclipse.persistence.internal.security.JCEEncryptor.<init>(JCEEncryptor.java: > 52) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java: > 39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java: > 27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at java.lang.Class.newInstance0(Class.java:355) > at java.lang.Class.newInstance(Class.java:308) > at > org.eclipse.persistence.internal.security.PrivilegedAccessHelper.newInstanceFromClass(PrivilegedAccessHelper.java: > 354) > at > org.eclipse.persistence.internal.security.SecurableObjectHolder.initSecurableObject(SecurableObjectHolder.java: > 93) > at > org.eclipse.persistence.internal.security.SecurableObjectHolder.getSecurableObject(SecurableObjectHolder.java: > 55) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateLogins(EntityManagerSetupImpl.java: > 1156) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateServerSession(EntityManagerSetupImpl.java: > 1422) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java: > 360) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java: > 151) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java: > 207) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java: > 195) > at Database.DatabaseFacade.<init>(DatabaseFacade.java:49) > at Database.DatabaseFacade.getLocalDatabaseFacade(DatabaseFacade.java: > 65) > at BussinessLogic.DatabaseLogic.<init>(DatabaseLogic.java:22) > 7/283 > at java.io.FileDescriptor.sync(Native Method) > at org.h2.store.fs.FileObjectDisk.sync(FileObjectDisk.java:34) > at org.h2.store.FileStore.sync(FileStore.java:459) > at org.h2.store.PageStore.writeVariableHeader(PageStore.java:914) > at org.h2.store.PageStore.setLogFirstPage(PageStore.java:908) > at org.h2.store.PageLog.openForWriting(PageLog.java:188) > at org.h2.store.PageStore.compact(PageStore.java:467) > at org.h2.engine.Database.closeOpenFilesAndUnlock(Database.java:1123) > at org.h2.engine.Database.close(Database.java:1074) > at org.h2.engine.Database.removeSession(Database.java:953) > at org.h2.engine.Session.close(Session.java:571) > at org.h2.jdbc.JdbcConnection.close(JdbcConnection.java:320) > at > org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java: > 609) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java: > 228) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java: > 369) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java: > 151) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java: > 207) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java: > 195) > at Database.DatabaseFacade.<init>(DatabaseFacade.java:49) > at Database.DatabaseFacade.getLocalDatabaseFacade(DatabaseFacade.java: > 65) > at BussinessLogic.DatabaseLogic.<init>(DatabaseLogic.java:22) > at BussinessLogic.DatabaseLogic.getDatabaseLogic(DatabaseLogic.java: > 32) > at UI.ParticleTrackerApp.appInit(ParticleTrackerApp.java:147) > at UI.ParticleTrackerApp.startup(ParticleTrackerApp.java:42) > at org.jdesktop.application.Application$1.run(Application.java:171) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642) > at java.awt.EventQueue.access$000(EventQueue.java:85) > at java.awt.EventQueue$1.run(EventQueue.java:603) > at java.awt.EventQueue$1.run(EventQueue.java:601) > at java.security.AccessController.doPrivileged(Native Method) > at java.security.AccessControlContext > $1.doIntersectionPrivilege(AccessControlContext.java:87) > 6/283 > at java.io.FileDescriptor.sync(Native Method) > at org.h2.store.fs.FileObjectDisk.sync(FileObjectDisk.java:34) > at org.h2.store.FileStore.sync(FileStore.java:459) > at org.h2.store.PageStore.writeVariableHeader(PageStore.java:914) > at org.h2.store.PageStore.setLogFirstPage(PageStore.java:908) > at org.h2.store.PageLog.openForWriting(PageLog.java:188) > at org.h2.store.PageStore.openExisting(PageStore.java:352) > at org.h2.store.PageStore.open(PageStore.java:275) > at org.h2.engine.Database.getPageStore(Database.java:2040) > at org.h2.engine.Database.open(Database.java:547) > at org.h2.engine.Database.openDatabase(Database.java:218) > at org.h2.engine.Database.<init>(Database.java:213) > at org.h2.engine.Engine.openSession(Engine.java:55) > at org.h2.engine.Engine.openSession(Engine.java:158) > at org.h2.engine.Engine.createSessionAndValidate(Engine.java:137) > at org.h2.engine.Engine.createSession(Engine.java:120) > at org.h2.engine.Engine.createSession(Engine.java:28) > at > org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java: > 289) > at org.h2.engine.SessionRemote.createSession(SessionRemote.java:265) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110) > at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94) > at org.h2.Driver.connect(Driver.java:72) > at java.sql.DriverManager.getConnection(DriverManager.java:582) > at java.sql.DriverManager.getConnection(DriverManager.java:154) > at > org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java: > 98) > at > org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java: > 162) > at > org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java: > 584) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java: > 228) > at > org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java: > 369) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java: > 151) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java: > 207) > at > org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java: > 195) > . > > --------------------------------------------------------------------------- > Thanks in advance! > > > On 11 mrt, 16:08, Thomas Mueller <[email protected]> wrote: >> Hi, >> >> Is the problem still there if you don't use SSL? If yes, is it still >> there if you use an embedded database? >> >> I'm not sure what the problem could be, maybe it's a DNS lookup or >> something like that (I did see something similar some time ago, but it >> should be fixed now). Could you create a few full thread dumps on both >> the server and the client to find out what the problem is? Or use a >> profiling tool - a simple profiling tool is included in >> H2:http://h2database.com/html/performance.html#application_profiling >> >> > why are conn6 and conn7 made? >> >> I don't know, maybe it's a connection pool? I don't really know how >> EclipseLink works, I'm sorry. >> >> Regards, >> Thomas > > -- > You received this message because you are subscribed to the Google Groups "H2 > Database" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/h2-database?hl=en. > > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.
