【问题标题】:Load Balancing of Process in 1 Server1台服务器进程的负载均衡
【发布时间】:2008-09-05 05:06:23
【问题描述】:

我有 1 个进程从 1 个 linux 服务器中的端口 1000 接收传入连接。但是,1 个进程的速度不足以处理所有传入的请求。

我想在服务器中运行多个进程,但只有 1 个端点。这样,客户端只会看到 1 个端点/进程,而不是多个。

我已经检查了 LVS 和其他负载平衡解决方案。这些解决方案似乎适用于多台服务器负载平衡。

还有其他解决方案可以帮助我解决我的问题吗?


我正在寻找更像 nginx 的东西,我需要在其中运行我的应用程序的多个副本。

让我试试看。

感谢您的帮助。

【问题讨论】:

    标签: linux load-balancing


    【解决方案1】:

    您可能还想使用像nginx 这样的网络服务器。它可以针对同一个应用程序的多个端口对您的应用程序进行负载平衡,并且通常用于负载平衡 Ruby on Rails 应用程序(它们是单线程的)。缺点是您需要运行应用程序的多个副本(每个端口上一个)才能使此负载平衡起作用。

    【讨论】:

      【解决方案2】:

      这个问题对我来说有点不清楚,但我怀疑您正在寻找的答案是让一个进程接受来自网络的任务,然后分叉“工作进程”以实际执行工作(在返回之前结果给用户)。

      这样,正在完成的工作不会阻止接受更多请求。

      正如您所指出的,负载平衡一词包含多台服务器的含义——您要查找的是有关如何编写 linux 网络守护程序的信息。

      您要查看的两个 kes 系统调用称为 fork and exec

      【讨论】:

        【解决方案3】:

        听起来您只需要将您的服务器与xinetd 集成。

        这是一个服务器,它侦听预定义的端口(您通过配置控制)并派生进程以处理该端口上的实际通信。

        【讨论】:

          【解决方案4】:

          您需要多处理或多线程。您没有具体说明服务器的详细信息,因此我无法就具体操作提供建议。马特建议的 fork 和 exec 可能是一个解决方案,但实际上:我们在谈论什么样的协议/服务器?

          【讨论】:

            【解决方案5】:

            我正在考虑运行多个类似于ypops 的应用程序。

            【讨论】:

              【解决方案6】:

              nginx 很棒,但如果你不喜欢全新的 web 服务器,带有 mod 代理平衡器的 apache 2.2 也可以完成同样的工作

              【讨论】:

                【解决方案7】:

                也许您可以将您的客户端修改为循环端口(例如)1000-1009 并运行 10 个进程副本?

                另外,必须有某种方式在内部重构它。

                通过在调用 fork() 之前打开它,可以让多个进程同时监听同一个套接字,但是(如果它是 TCP 套接字)一旦调用了 accept(),生成的套接字就属于成功接受的任何进程连接。

                所以基本上你可以使用:

                • Prefork,您在其中打开套接字,分叉指定数量的子节点,然后分担负载
                • 分叉后,您有一个主进程,它接受所有连接并分叉子进程来处理各个套接字
                • 线程 - 您可以以任何您喜欢的方式与它们共享套接字,因为文件描述符不会被克隆,它们仅可用于任何线程。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-06-20
                  • 2013-08-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-03-17
                  • 2017-06-12
                  相关资源
                  最近更新 更多