簡體   English   中英

Tomcat 7持久會話管理器從商店過早加載

[英]Tomcat 7 Persistent Session Manager prematurely loads from Store

我們正在嘗試在運行單個服務器的Elasticbeanstalk環境中為tomcat 7配置dynamodb會話管理器

我們可以看到會話數據被定期備份到dynamodb,但是偶爾(對於同一會話)舊的會話數據也被從dynamodb中加載回去。 在我們的應用程序中,這通過加載您正在查看的上一個項目來體現出來(該項目存儲在會話中)。 JSESSIONID cookie保持不變,並且客戶端保持相同的會話。 如果我們關閉會話管理器,則此問題已解決。

這是我們的context.xml的內容

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager
    className="com.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionManager"
    Table="SessionTable"
    RegionId="eu-west-1"/>
</Context>

我們嘗試將tomcat 7文檔中定義的maxIdleBackup和maxIdleSwap設置為高數字,但無濟於事。

如果將maxIdleBackup和maxIdleSwap設置為零,則會減少錯誤,因為會話數據更頻繁地備份到dynamodb,但這不能解決問題。

是什么導致tomcat從商店中加載會話數據? 我的理解是,只有在根本不可用的情況下,才應該從商店中加載它(即,客戶端訪問了另一個tomcat)。

我相信您會遇到問題6中提到的實現的異步特性(以及對粘性會話的隱式需求)

如果您不使用粘性會話,建議您使用同步的Redis方法

最后,我們求助於使用不存在此問題的JDBCStore 我希望將來有更多時間回到這個問題。

暫無
暫無

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

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