Я использую кеш второго уровня EhCache для кэширования и кеширования запросов. Все в порядке, но у процессора у меня есть 100% до 10 пользователей через JMeter. Если вы отключите EhCache, тогда процессор станет подходящим. У кого-нибудь есть мнение по этому поводу? Поэтому вместо повышения производительности EhCache загрузил мой процессор.Почему при использовании EhCache процессор достигает 100%?
Это моя зависимость:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.8.Final</version>
</dependency>
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"
name="cacheManager"
monitoring="autodetect" dynamicConfig="true">
<diskStore path="user.home/ehcacheEntriesStore" />
<defaultCache maxEntriesLocalHeap="100" eternal="false"
timeToIdleSeconds="10" timeToLiveSeconds="10" diskSpoolBufferSizeMB="30"
maxEntriesLocalDisk="1000" diskExpiryThreadIntervalSeconds="1200"
memoryStoreEvictionPolicy="LRU" statistics="false">
<persistence strategy="localTempSwap"/>
</defaultCache>
<cache name="serviceCache"
maxBytesLocalHeap="500M"
eternal="false"
timeToIdleSeconds="300"
overflowToDisk="true"
maxElementsOnDisk="1000"
memoryStoreEvictionPolicy="LRU"/>
<cache name="org.hibernate.cache.StandardQueryCache"
maxEntriesLocalHeap="50000"
eternal="false"
timeToLiveSeconds="300">
<persistence strategy="localTempSwap"/>
</cache>
<cache name="org.hibernate.cache.spi.UpdateTimestampsCache"
maxEntriesLocalHeap="50000" eternal="true">
<persistence strategy="localTempSwap"/>
</cache>
</ehcache>
persistence.xml
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL9Dialect"/>
<property name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.cache.region.factory_class"
value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="net.sf.ehcache.configurationResourceName" value="ehcache.xml"/>
<property name="hibernate.cache.default_cache_concurrency_strategy" value="transactional"/>
<property name="hibernate.max_fetch_depth" value="4"/>
<property name="hibernate.auto_close_session" value="true"/>
<!--<property name="hibernate.transaction.flush_before_completion" value="true"/>-->
<property name="hibernate.transaction.auto_close_session" value="true" />
<property name="hibernate.c3p0.timeout" value="30" />
<!--<property name="hibernate.generate_statistics" value="true"/>-->
<!--<property name="hibernate.cache.use_structured_entries" value="true"/>-->
</properties
>
В общем, это хорошая новость, вы достигли почти идеального использования процессора. :) Однако, если это замедляет ваше приложение, вам следует изучить его с помощью профилировщика и обновить вопрос своими выводами. –
Я использую профайлер, чтобы найти следующий http://snag.gy/kRpDI.jpg. – Fudji