在Rails应用程序中,随着生产数据库的增长,会不时创建许多会话。作为一种解决方法,我会不时删除会话。我想解决这个问题,但我不知道如何调试这样的情况。会话数据非常小,所以我可以切换到cookie存储,但这不能解决问题。调试这种情况的最佳技术是什么?什么可能是创建大量新会话的原因?
我是该应用程序的唯一用户,它在本地虚拟机上运行,但其他人可以看到。我的背景是:
在提出问题之后,我开了一个会议(所以没有主动使用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应用程序内的所有请求都来自同一台机器(主机)。
答案 0 :(得分:0)
我找到了常规电话的发起人(偶然)。我注意到当我的Opera浏览器关闭时,30秒内没有额外的日志条目,其中包含一个新的会话。
我深入挖掘一下,发现Opera的“Start page”包含了对Rails应用程序调用的条目之一。从“开始页面”删除该条目后,不再创建任何会话。
所以,对我来说,解决方案是从起始页面没有引用。我从来没有想过会出现这种情况: - (