如何在单个服务器上设置多个 apache + php-fpm + mariadb 服务组并对每个组进行资源限制?

如何在单个服务器上设置多个 apache + php-fpm + mariadb 服务组并对每个组进行资源限制?

我们有一个 centos8 网络服务器,托管数百个网站,使用 3 个服务:apache、mariadb 和 php-fpm。由于 apache 和 mariadb 不支持每个帐户的资源限制,因此所有网站对许多系统资源(存储、数据库)的访问权限相同,单个网站可能会使机器过载(通常是通过数据库查询发生的),并导致托管在那里的所有网站瘫痪。

我们希望使用 Linux cgroups 和可能的其他容器功能来限制一个网站可以使用的资源,主要是每秒 php 进程的数量和 I/O 操作和数据库查询的数量。

实现此目的的一种(不一定是性能最佳的)方法是为每个网站或网站组运行一组专用的服务(apache+mariadb+php-fpm),并配置特定的资源限制。这样,就可以同时运行数百个服务组。

从现有的 3 个服务设置中,更直接的设置方法是什么?性能是次要的,我们不想创建和运行数百个容器镜像。相反,我们希望在根文件系统中以易于运行时修改的形式定义所有内容,并通过 systemd 控制所有服务。因此,没有 docker 容器。

相关内容