Почему Ruby on Rails создает новые сеансы при каждом попадании (иногда)?

По какой-то причине обработчик сеанса в моем приложении RoR для многих пользователей в производственной среде ведет себя странно. Я использую хранилище сеансов RoR ActiveRecord по умолчанию, и в процессе разработки все работает нормально. Пока я держу браузер открытым, одна существующая строка данных обновляется каждый раз, когда я изменяю сеанс, как вы ожидаете, что сеансы будут работать. При переходе на рабочий сервер я лично наблюдаю такое же поведение. Однако, глядя в базу данных, я вижу очень много строк, как на этом скриншоте:

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 будет изменен на что-то другое. Более того, большинство (> = 97,5% из более чем 16000 строк данных) строк данных сеанса имеют «время жизни» 0 секунд (т. Е. Created_at равно updated_at).

Есть ли у вас идеи, что могло вызвать эту проблему?

Есть ли вероятность, что вызовы redirect_to нарушат обработку сеанса RoR?

Заранее большое спасибо за ваши мысли!

5
задан jhuebner 28 May 2011 в 04:04
поделиться