Vaadin中大型系统的内存占用

时间:2013-02-10 12:05:44

标签: performance vaadin

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

但是,由于Vaadin保持所有州的会议,我对大型系统的Vaadin内存占用有点担心。这意味着对于每个新用户,所有应用程序状态都将存储在内存中,不是吗? 我们无法构建单一系统 - 系统必须具有可扩展性和灵活性。由于我们拥有庞大的客户群,因此必须易于定制并随时可以发展。

有谁可以分享经验和可能的解决方法如何最大限度地减少或消除Vaadin中的这些问题?

2 个答案:

答案 0 :(得分:14)

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

Vaadin架构基于事件驱动的组件。使用组件非常简单,可以创建紧密耦合的应用程序。原因是组件被构造成层次结构。这就像金字塔。构建了更大的应用程序;更大的金字塔存储在每个用户的会话中。

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

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

为了看到差异,我们已经做了一些测试来比较为使用该应用程序的用户分配的内存。

开发的应用程序:

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

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

几乎忘记了。我们使用了Lexaden Web Flow库。这是Apache许可证。

答案 1 :(得分:9)

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

另外,我在生产中运行Vaadin的人找到了以下信息。

BalázsHódossy:

  

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

Pierre-Emmanuel Gros:

  

对于1000天用户大量使用的纯vaadin应用程序:Server   3 gb 2核心Jetty与ulimit到50000 Postgresql 9与50   concurent用户(使用连接池)。作为软件的一部分,我还使用了ehcache来缓存DTO对象和纯JDBC。