簡體   English   中英

隨着並行會話數的增加,如何縮放基於Java的Web應用程序?

[英]How to scale a java based web application as the number of parallel sessions increase?

我有一個基於Java的(彈簧/休眠)Web應用程序,用戶可以在其中執行6個不同的任務。 每個任務創建一個包含30個線程的線程池。 線程用於提高應用程序的吞吐量/性能。

多個用戶可以同時登錄該應用程序並執行這6個任務中的任何一個。

Ex: 
User 1 logins - performs task 1 - 30 threads get created
User 2 logins - performs task 3 - 30 threads are created.
As user1 and user2 login at the same time, there are 60 active threads. 

隨着越來越多的用戶登錄,越來越多的實時線程被創建。 這里需要擔心的是,該應用程序最終將處於OOM中,並且有大量線程處於活動狀態。

是否可以使用其他結構或機制來解決此問題?

可以在不顯着影響應用程序性能的情況下擴展並行會話的數量嗎?

一旦開始增加用戶數量,最終將耗盡計算機或JVM可提供的資源。 在您的情況下,似乎是線程轉換為內存和CPU。

您將需要使用更多的機器和JVM實例。 您可能需要無狀態架構。

用戶瀏覽器- >負載均衡器- >無國籍Web應用程序服務器農場 - >數據庫

在此體系結構中,您需要注意的事情是您不應在WebApp中存儲/緩存任何共享數據或會話數據。 您必須將所有這些都放在共享服務器上,例如數據庫,內存緩存等。這將允許您在任何給定時間根據用戶負載自由地啟動或關閉WebApp JVM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM