2013-02-10 22 views
17

我正在金融領域工作,我們即將選擇Vaadin 7開發大型重負載系統。Vaadin大型系統的內存佔用空間

但是,由於Vaadin保持會話中的所有狀態,我對Vaadin大型系統的內存佔用情況感到有些擔憂。這意味着對於每個新用戶,所有應用程序狀態都將存儲在內存中,不是嗎?
我們不能構建單一系統 - 系統必須具有可擴展性和靈活性。由於我們擁有龐大的客戶羣,因此必須易於定製並隨時發展。

任何人都可以請分享經驗和可能的解決方法如何最大限度地減少或消除Vaadin中的這些問題?

+0

有多少用戶將使用該應用程序? – 2013-02-10 20:45:21

+1

超過20 000同時用戶 – 2013-02-11 17:13:27

回答

8

我想你應該看看這裏:https://vaadin.com/blog/-/blogs/vaadin-scalability-study-quicktickets

另外,我發現誰在生產環境中運行Vaadin人以下信息。

巴拉茲Hódossy:

我們有超過10個000用戶後臺系統。每日 用戶數大約爲3000,但其中一半使用系統8小時 而無需註銷。我們使用Liferay 6.0.5 Tomcat bundle和Vaadin作爲 portlet。我們的兩臺服務器有48 GB RAM,我們給Tomcat 24 GB的堆。 DB有18 GB,其餘的系統。測量會話 大小的堆,併發用戶和活動。更多的內存會導致更多的 很少但更長的完整GC。我們計劃增加工人的數量並減少堆。當你測量你的服務器時,試着增加一點點內存來增加 。如果成本比減少處理器成本併購買更多內存如此重要。大多數情況下,它有一點點調整是有價值的 。

皮爾靈光格羅斯:

對於1000 DAYLY用戶heavyly使用的,純vaadin應用:服務器 3 GB 2芯碼頭用ulimit 50000 PostgreSQL的9與50個 concurent用戶(一個連接池被使用)。作爲軟件部分,我還使用ehcache來緩存DTO對象和純JDBC。

+0

謝謝您的信息,將試圖找出 – 2013-02-14 05:57:03

14

在我們的產品開發過程中,我們遇到了使用默認Vaadin架構的大內存佔用問題。

Vaadin架構基於事件驅動的組件。使用組件非常簡單,可以創建緊密耦合的應用程序。原因是組件被組織成一個層次結構。它就像一個金字塔。更大的應用程序建立;對於每個用戶而言,較大的金字塔存儲在會話中。

爲了顯着減少內存分配,我們使用舊學校狀態管理爲後臺創建了基於頁面的方法,並在後臺創建了全面的事件模型。它基於XML格式的狀態圖符號。

因此,會話在用戶工作流程中只保留訪問過的頁面,由Statechart配置描述。當用戶完成工作流程時,所有頁面將被釋放並由垃圾收集器收集。

要查看差異,我們已經完成了一些測試,以比較爲使用該應用程序的用戶分配的內存。

開發的應用:

  • 與緊耦合方法從5消耗到每個用戶
  • 疏鬆耦合的辦法堆的15MB - 高達2 MB

我們很高興結果,因爲它使我們能夠使用4GB RAM擴展大型系統,每臺服務器可支持1000-1500個併發用戶。

差點忘了。我們使用Lexaden Web Flow庫。它與Apache許可證。

+0

謝謝Aliaksei,聽起來不錯!希望與您聯繫以瞭解更多信息。 – 2013-02-17 05:48:18

+1

沒問題隨時聯繫,你也可以嘗試[企業採樣器](http://samples.lexaden.com) – 2013-02-17 14:47:36