簡體   English   中英

Tomcat由於休眠而啟動緩慢

[英]Tomcat slow startup due to hibernate

目前我的應用程序使用Tomcat 6和hibernate 3,但我注意到啟動非常慢,僅映射了約40個實體。 不知道這是否是由休眠引起的,日志如下:

以下過程大約需要5分鍾:

有任何想法嗎? 順便說一句我已經嘗試過增加tomcat的內存

2016-03-01 09:18:53,933  INFO [main] SessionFactoryObjectFactory.addInstance(105) | Not binding factory to JNDI, no JNDI name configured
2016-03-01 09:24:42,046 DEBUG [main] GnrlLookupView.<clinit>(37) | Registering view: GnrlLookupView
2016-03-01 09:24:46,881  INFO [main] QuartzScheduler.<init>(209) | Quartz Scheduler v.1.6.0 created.

休眠配置:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource"> <ref bean="dataSource" /> </property>
    <property name="mappingJarLocations">
        <list>
            <value>WEB-INF/lib/*-hbm.jar</value>
        </list> 
    </property>
    <property name="lobHandler">
        <bean class="org.springframework.jdbc.support.lob.OracleLobHandler">
            <property name="nativeJdbcExtractor">
                <bean class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
            </property>
        </bean>
    </property>     
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.connection.SetBigStringTryClob">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>  <!-- Explicitly enabled 2nd level cache since upgrade to hibernate version 3.2.x -->
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
        </props>
    </property>

    <property name="entityInterceptor">
        <ref bean="entityAuditInterceptor" />
    </property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref local="sessionFactory" />
    </property>
</bean>ref bean="entityAuditInterceptor" />
    </property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref local="sessionFactory" />
    </property>
</bean>

更新 :我啟用了更精細的日志記錄,並轉到以下內容,它在5分鍾內打印出以下內容,您知道嗎?

SessionFactoryUtils.doGetSession(316) | Opening Hibernate Session
2016-03-01 10:46:45,468 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,468 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,468 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,483 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,483 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,483 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string

2016-03-01 10:44:43,487 DEBUG [main] HibernateTemplate.flushIfNecessary(389) | Eagerly flushing Hibernate session
2016-03-01 10:44:43,487 DEBUG [main] SessionFactoryUtils.closeSession(789) | Closing Hibernate Session
2016-03-01 10:44:43,487 DEBUG [main] SessionFactoryUtils.doGetSession(316) | Opening Hibernate Session

找到不是由於休眠設置的答案,似乎在啟動應用程序期間,應用程序正在加載大量表並嘗試保存在緩存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM