Hibernate-Start sehr langsam

Aus irgendeinem Grund, den Start von meinem hibernate-Anwendung ist unbarrably langsam. (bis zu 2 min)
Ich habe darüber nachgedacht, dass die c3p0-Konfiguration ist falsch ( stellt sich die Frage, ), aber das Studium der Protokolle zeigt, dass es keine Aktivität, nur, nachdem die Verbindung zum server aufgebaut. Auch mit dem built-in-polling-Funktionen Ruhezustand zeigt das gleiche Ergebnis.

Hier ist ein Ausschnitt aus den Protokollen:

20:06:51,248 DEBUG BasicResourcePool:422 - decremented pending_acquires: 0
20:06:51,248 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@1acaf0ed [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@5f873eb2)
20:06:51,248 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@1acaf0ed [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@5f873eb2)
20:06:51,273 DEBUG JdbcServicesImpl:121 - Database ->
       name : PostgreSQL
    version : 9.1.6
      major : 9
      minor : 1
20:06:51,274 DEBUG JdbcServicesImpl:127 - Driver ->
       name : PostgreSQL Native Driver
    version : PostgreSQL 9.2 JDBC4 (build 1002)
      major : 9
      minor : 2
20:06:51,274 DEBUG JdbcServicesImpl:133 - JDBC version : 4.0 ##### HANGS FOR 2 MINUTES  ON THIS LINE #####
20:08:14,727  INFO Dialect:123 - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
20:08:14,736  INFO LobCreatorBuilder:120 - HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
20:08:14,736 DEBUG GooGooStatementCache:297 - checkinAll(): com.mchange.v2.c3p0.stmt.GlobalMaxOnlyStatementCache stats -- total size: 0; checked out: 0; num connections: 0; num keys: 0
20:08:14,736 DEBUG GooGooStatementCache:297 - checkinAll(): com.mchange.v2.c3p0.stmt.GlobalMaxOnlyStatementCache stats -- total size: 0; checked out: 0; num connections: 0; num keys: 0
20:08:14,883 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@1acaf0ed [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@5f873eb2)
20:08:14,883 DEBUG BasicResourcePool:1644 - trace com.mchange.v2.resourcepool.BasicResourcePool@1acaf0ed [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@5f873eb2)
20:08:14,883 DEBUG GooGooStatementCache:297 - checkinAll(): com.mchange.v2.c3p0.stmt.GlobalMaxOnlyStatementCache stats -- total size: 0; checked out: 0; num connections: 0; num keys: 0

(Bitte beachten Sie die #Kommentar -#.)

Ich habe auch versucht eine ältere Postgres-JDBC-Treiber ohne Glück zu löschen.

Verbindung zu einer lokalen Datenbank funktioniert gut. Verbindung wird sofort hergestellt und ich kann die Datenbank Abfragen. Diese remote-db ist ein Heroku dev-Instanz. Ich versuchte es mit einer anderen Fernbedienung auch. Gleiches Ergebnis.

Ich bin aus Ideen heraus, was kann ich jetzt prüfen, um loszuwerden, dieses ärgernis. Jede Hilfe wäre sehr geschätzt werden.

Vielleicht mein hibernate.cfg.xml hilfreich ist:

http://www.hibernate.org/dtd/hibernate-

configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url"/>
        <property name="connection.default_schema"/>
        <property name="connection.username"/>
        <property name="connection.password"/> 

        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
            <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
        <property name="current_session_context_class">thread</property>            
        <property name="hibernate.c3p0.acquire_increment">3</property>
        <property name="hibernate.c3p0.min_size">3</property>
        <property name="hibernate.c3p0.max_size">10</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>
        <property name="hibernate.c3p0.acquireRetryDelay">500</property>

        <property name="show_sql">true</property>
        <property name="format_sql">false</property>

        <property name="hbm2ddl.auto">validate</property>

        <mapping class="core.entities.Exam" />
        <mapping class="core.entities.Examination" />
        ...
    </session-factory>
</hibernate-configuration>

EDIT: ich habe versucht, zu finden, der Grund für die Verzögerung über Protokolle und Profilierung, sondern wurden weitgehend erfolglos. (Ich bin nicht so Fortgeschritten in diesem Bereich, obwohl.) Am Ende ging ich mit versuchen und scheitern, und änderte meine db für eine remote-MySQL-Instanz zu prüfen, ob ein Unterschied Auftritt. Stellt sich heraus, dass die Verbindung hergestellt ist, fast sofort.

InformationsquelleAutor der Frage bentrm | 2013-01-21

Schreibe einen Kommentar