【问题标题】:Memory footprint for large systems in VaadinVaadin 中大型系统的内存占用
【发布时间】:2013-01-25 16:37:16
【问题描述】:

我在金融部门工作,我们即将选择 Vaadin 7 来开发大型重载系统。

但我有点担心大型系统的 Vaadin 内存占用,因为 Vaadin 将所有状态保持在会话中。这意味着对于每个新用户,所有应用程序状态都将存储在内存中,不是吗?
我们不能建立单一的系统——系统必须是可扩展的和敏捷的。由于我们拥有庞大的客户群,因此必须易于定制并准备好发展。

任何人都可以分享经验和可能的解决方法,以尽量减少或消除 Vaadin 中的这些问题吗?

【问题讨论】:

  • 有多少用户将使用该应用程序?
  • 超过 20 000 名同时用户

标签: performance vaadin


【解决方案1】:

在我们的产品开发过程中,我们遇到了使用默认 Vaadin 架构占用大量内存的问题。

Vaadin 架构基于事件驱动的组件。使用组件来创建紧密耦合的应用程序相当简单。原因是组件被结构化为层次结构。它就像一个金字塔。构建更大的应用程序;较大的金字塔存储在每个用户的会话中。

为了显着减少内存分配,我们为应用程序创建了一种基于页面的方法,该方法在后台使用旧式状态管理的综合事件模型。它基于 XML 格式的 Statechart 表示法。

因此,会话在用户工作流程期间仅保留访问过的页面,由状态图配置描述。当用户完成工作流时,所有页面都会被释放以被垃圾收集器收集。

为了查看差异,我们进行了一些测试来比较为使用应用程序的用户分配的内存。

开发的应用程序:

  • 使用紧密耦合的方法每个用户消耗 5 到 15MB 的堆
  • 采用松耦合方法 - 最大 2 MB

我们对结果非常满意,因为它让我们可以使用 4GB RAM 将大型系统扩展到每台服务器多达 1000-1500 个并发用户。

差点忘了。我们使用了Lexaden Web Flow 库。它具有 Apache 许可证。

【讨论】:

  • 谢谢 Aliaksei,听起来很棒!希望与您联系以了解更多信息。
  • 没问题随时联系,也可以试试enterprise sampler
【解决方案2】:

我想你应该看看这里:https://vaadin.com/blog/-/blogs/vaadin-scalability-study-quicktickets

另外,我发现在生产中运行 Vaadin 的人提供了以下信息。

巴拉兹·霍多西:

我们有一个拥有超过 10000 个用户的后台系统。日常 用户数约为 3000 但其中一半使用系统 8 小时 无需注销。我们使用 Liferay 6.0.5 Tomcat bundle 和 Vaadin 作为 小门户。我们的两台服务器有 48 GB RAM,我们给 Tomcat 24 GB 堆。 DB 获得了 18 GB,其余的则由系统获得。测量会话的堆 大小、并发用户和活动。更多内存导致更多 很少但更长的完整 GC。我们计划增加 Tomcat 的数量 工人并减少堆。当你测量你的服务器时,尝试添加 多一点内存。如果成本比降低更重要 处理器成本并购买更多RAM。大多数时候它是有价值的 稍作调整。

皮埃尔-伊曼纽尔格罗斯:

对于每天 1000 名用户大量使用,一个纯 vaadin 应用程序:服务器 3 gb 2 核 Jetty,ulimit 到 50000 Postgresql 9 和 50 并发用户(使用连接池)。作为软件部分,我还使用 ehcache 来缓存 DTO 对象,以及纯 JDBC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多