【发布时间】:2016-06-30 01:39:15
【问题描述】:
出于性能原因,我需要运行一个应用的多个实例,固定到 CPU,监听不同的端口。 HAProxy TCP 负载平衡器位于它们前面以分配流量。
这样做是为了防止任何线程上下文切换并强制执行无共享设计(因此在应用程序中不需要任何类型的锁,假设它是单线程的)。
这意味着在具有 64 个 CPU 的服务器上,我可能将 HAProxy 固定到 CPU 0,然后我的应用程序的 63 个实例分别固定到单独的 CPU (1-63)。
显然,在启动、重启、关机等方面管理起来相当复杂。
我想知道是否有任何方法可以使用 systemd 为我处理这种复杂性。
我知道,如果我将 HAProxy 定义为一个单元,然后声明它需要与之通信的其他应用程序,它可以解决启动问题,例如
Require=app1,app2,.....,app63
我可以的
systemctl start myhaproxy
它会首先启动它需要的 63 个实例(假设在应用安装期间它们中的每一个都被定义为一个单独的 systemd 单元)。
但是,我想知道是否有办法让它也适用于重启和关机。
如果我这样做:
systemctl stop myhaproxy
我希望它自动关闭与之对话的应用程序的所有 63 个实例。
如果我这样做了
systemctl restart myhaproxy
那么我希望它先重新启动 Require 中列出的所有服务,然后再重新启动自己。
这可能吗?还是超出了 systemd 所能提供的范围?
【问题讨论】:
标签: linux multithreading real-time systemd system-dependent