データベースへのトランザクションのバッチを書き込むために、Ehcache書き込みビハインドキャッシュを使用しようとしています。私が必要とするのは、write-behindキャッシュがトランザクションを5秒間隔で(またはより頻繁に)ダンプすることです。Ehcache書き込みビハインドキャッシングスレッド優先度
私は可能性として試してみるので、私は何かが欠けているに違いありません、それは動作しません。私はwrite-behindキャッシングを設定し、サーバーに負荷をかけます。数千回のトランザクション、その後数十万回のトランザクションが発生し、数分待ってもデータベースには何も残っていません。キャッシュがデータベースへの書き込みを開始するサーバー上の負荷をシャットダウンするまではありません。
これはスレッド優先度に問題がありますか?サーバーに負荷がかかっていてもDB書き込みを実行するように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のドキュメント、http://ehcache.org/documentation/hibernate.htmlに従って、私たちはhibernateを使用しています。奇妙なことに、サーバー上の負荷をシャットダウンしても、データベースへの書き込みが開始されるまでに5分ほど待たなければなりません。ご協力いただきありがとうございます。 – Tinclon
私は混乱しているので、server.db.model.Requestは休止状態のデータを保持していますか?私はあなたが休止状態のキャッシュでehcache write-behindを使用すべきではないことを知っているのですか?また、どのバージョンを使用していますか?また、それはehcacheスタンドアロンの権利ですか?テラコッタが集まっていない... –