繁体   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