为什么要一直创建新会话?

时间:2014-10-17 06:13:22

标签: ruby session ruby-on-rails-4 sqlite

在Rails应用程序中,随着生产数据库的增长,会不时创建许多会话。作为一种解决方法,我会不时删除会话。我想解决这个问题,但我不知道如何调试这样的情况。会话数据非常小,所以我可以切换到cookie存储,但这不能解决问题。调试这种情况的最佳技术是什么?什么可能是创建大量新会话的原因?

我是该应用程序的唯一用户,它在本地虚拟机上运行,​​但其他人可以看到。我的背景是:

  • Rails 4.0.0(最近没时间升级)
  • SQLite3的
  • ruby​​ 1.9.3p547

在提出问题之后,我开了一个会议(所以没有主动使用Rails应用程序),当我回来时,查询

sqlite> select created_at, updated_at from sessions where updated_at > "2014-10-17";

显示以下结果:

2014-10-17 07:49:56.202187|2014-10-17 07:49:56.202187
2014-10-17 07:50:26.039702|2014-10-17 07:50:26.039702
2014-10-17 07:50:56.043092|2014-10-17 07:50:56.043092
2014-10-17 07:51:26.057016|2014-10-17 07:51:26.057016
2014-10-17 07:51:56.163507|2014-10-17 07:51:56.163507
2014-10-17 07:52:26.071406|2014-10-17 07:52:26.071406
2014-10-17 07:52:56.191103|2014-10-17 07:52:56.191103
2014-10-17 07:53:26.070792|2014-10-17 07:53:26.070792

因此,当请求导致新会话时,似乎有一个定期的时间表。我怎样才能找到原因?


更新:我已经集成了logging from another answer,现在日志条目与会话条目匹配。下一步是找到真正的发件人。更复杂,因为我使用vagrant和port转发,所以Rails应用程序内的所有请求都来自同一台机器(主机)。

1 个答案:

答案 0 :(得分:0)

我找到了常规电话的发起人(偶然)。我注意到当我的Opera浏览器关闭时,30秒内没有额外的日志条目,其中包含一个新的会话。

我深入挖掘一下,发现Opera的“Start page”包含了对Rails应用程序调用的条目之一。从“开始页面”删除该条目后,不再创建任何会话。

所以,对我来说,解决方案是从起始页面没有引用。我从来没有想过会出现这种情况: - (