如何在共享套接字上运行本地tomcat集群?

时间:2013-03-05 15:30:25

标签: tomcat unicorn foreman

最近我遇到了一个名为Unicorn的Ruby的Web服务器,它有一个简单而又出色的想法:

  

当Unicorn主人启动时,它会将我们的应用程序加载到内存中。一旦它准备好服务请求它就会分叉16名工人。那些工作者然后在套接字上选择(),只提供他们能够处理的请求。通过这种方式,内核为我们处理负载平衡。

与此并行的是设置一个本地tomcat集群,每个集群-Xmx384MB,然后在共享套接字上分别设置一个“select()”,只提供他们能够处理的请求“

我想知道如何调整tomcat源代码或某些脚本才能实现这一目标?

如果您可以使用Foreman同时运行3个并发的tomcat应用服务器,请考虑所有可能性!

1 个答案:

答案 0 :(得分:1)

Tomcat已经这样做:它启动N个工作线程(您可以配置N),它会将每个请求转发到相应的Web应用程序。如果有100个用户尝试访问同一个Web应用程序,他们的请求将在N个线程之间共享,每个用户都将执行该应用程序的代码。

编辑 Einhorn不符合Java EE标准,因此它可以削减许多角落。要使用Tomcat执行类似操作,您需要启动多个Tomcat进程(每个进程都需要自己的套接字)和前端的负载均衡器代理/ http服务器来分配负载。

您的应用程序也需要在数据库级别为此设计(即它们必须能够处理写入相同表的多个进程)。