出於某種原因,我的RoR應用程序中的會話處理程序似乎在許多用戶的生產中表現怪異。我正在使用默認的RoR ActiveRecord Session Store,並且在開發中一切正常。只要我保持瀏覽器打開狀態,每次修改會話時都會更新一個現有的數據行,就像您期望的會話正常工作一樣。當進入生產服務器時,我親自觀察到同樣的行爲。然而,在數據庫中查找的時候,我看到很多行就像這個截圖:爲什麼Ruby on Rails會在每次擊中(有時)時創建新的會話?
http://imageshack.us/f/191/screenshot20110527at832.png/(很抱歉,但我不能在這裏直接,因爲我是一個新的用戶包括圖像)
該網站包含在iframe在另一個網站上,並有一個調度程序,它將基於某些會話數據將用戶發送(redirect_to)到同一控制器中的另一個操作,即對於所有用戶,相同的URL(mydomain.com/dispatcher)將包含在iframe中。映射到此URL的操作將根據會話[:current_action]決定將用戶重定向到何處。
該網站幾乎沒有任何流量,所以沒有辦法,實際上有約。 10個不同的用戶每秒向網站發出請求。實際上,我可以在production.log中看到,而被重定向,因此用戶具有不同的session_id,例如,當訪問調度程序時,用戶可能會有一個特定的sessionid,並且在請求實際的目標操作時(作爲調度程序中的redirect_to的結果),sessionid將更改爲其他內容。此外,會話數據行中的大多數(大於16000個數據行的97.5%)具有0秒的「壽命」(即,created_at等於updated_at)。
你有什麼想法可能會導致這個問題?
有沒有可能redirect_to調用RoR會話處理?
非常感謝您提前對您的想法!
您的數據庫可能有問題嗎?這是一個常見問題,您是否嘗試過在開發中使用相同類型的數據庫,然後問題是否會持續存在? – 2011-05-28 04:06:19
你自己的曲奇在製作上看起來如何?也許你有一個不可思議的設置,爲每個子目錄/資源創建一個新的cookie? – 2011-05-28 04:22:51