我試圖使用Ehcache寫後緩存來將批處理事務寫入我的數據庫。我需要的是後寫緩存以5秒的時間間隔(或更頻繁)轉儲事務。Ehcache寫後緩存線程優先
我必須錯過一些東西,因爲儘可能地嘗試,它就是行不通的。我設置了後寫緩存,然後將加載到服務器上。成千上萬,然後幾十萬的交易,等待幾分鐘後,數據庫中仍然沒有任何東西。直到我關閉服務器上的負載後,緩存纔開始寫入數據庫。
這是線程優先級的問題嗎?有沒有辦法修改Ehcache來執行數據庫寫入,即使服務器處於負載下?
這裏是我的配置:
<cache name="server.db.model.Request"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="5"
timeToLiveSeconds="5"
overflowToDisk="false"
memoryStoreEvictionPolicy="FIFO">
<cacheWriter writeMode="write_behind" maxWriteDelay="5" rateLimitPerSecond="5"
writeCoalescing="true" writeBatching="true" writeBatchSize="5000"
retryAttempts="2" retryAttemptDelaySeconds="10">
<cacheWriterFactory class="server.db.util.RequestCacheWriterFactory"/>
</cacheWriter>
</cache>
感謝。
這是在Linux/Tomcat環境中。我們沒有明確地設置線程優先級。通過關閉負載,我的意思是我關閉了我用來擊中服務器的jMeter線程。最後,根據這裏的ehcache文檔,我們使用hibernate:http://ehcache.org/documentation/hibernate.html。奇怪的是,即使我關閉了服務器上的負載之後,在開始寫入數據庫之前,我還得等5分鐘左右。謝謝你的幫助。 – Tinclon 2011-02-09 16:47:23