По какой-то причине обработчик сеанса в моем приложении 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?
Заранее большое спасибо за ваши мысли!