0

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

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

一个并行的方法是设置一个本地 tomcat 集群,每个集群都带有 -Xmx384MB,然后让每个单独的集群“select() 在一个共享套接字上,只为他们能够处理的请求提供服务”

我想知道如何调整 tomcat 源代码或一些脚本以实现这一点?

如果您可以使用 Foreman 一次运行 3 个并发 Tomcat 应用程序服务器,请考虑所有可能性!

4

1 回答 1

1

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

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

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

于 2013-03-05T15:39:35.863 回答