Lift 2.0带有Actors和StatefulSnippets等对表的印象让我印象深刻,但我有点担心这些东西的内存开销.我的问题是双重的:
Lift如何确定何时垃圾收集状态对象?
页面请求的内存占用量是多少?
如果网络爬虫在网站的足迹上跳舞,他们是否会打开足够的状态对象以淹没适度的VPS(512M)?这个问题非常明显取决于应用程序,但我很好奇是否有人有任何真实世界的数字,他们可以抛弃我.
Lift在会话中存储状态信息,因此一旦会话被破坏,与该会话相关联的状态就会消失.
在会话中,Lift跟踪分配状态的每个页面(例如,浏览器中的ajax按钮和服务器上的功能之间的映射)并且具有来自浏览器的心跳.未在10分钟内看到心跳的页面的功能未被引用,因此JVM可以对它们进行垃圾回收.所有这些都是可调的,因此您可以改变心跳频率,功能寿命等,但在实践中,默认值可以很好地工作.
在会话爆炸方面,是的......这是一个小问题.热门网站(包括http://demo.liftweb.net/)体验它.示例代码(请参阅http://github.com/lift/lift/tree/master/examples/example/)检测由单个请求创建的会话,然后放弃并尽早过期.我正在运行带有256MB堆大小的demo.liftweb.net(它适合512MB VPS),偶尔会话计数超过1,000,但这会迅速遏制搜索引擎流量.