![如何在单个服务器上设置多个 apache + php-fpm + mariadb 服务组并对每个组进行资源限制?](https://linux22.com/image/774727/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%8D%95%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E8%AE%BE%E7%BD%AE%E5%A4%9A%E4%B8%AA%20apache%20%2B%20php-fpm%20%2B%20mariadb%20%E6%9C%8D%E5%8A%A1%E7%BB%84%E5%B9%B6%E5%AF%B9%E6%AF%8F%E4%B8%AA%E7%BB%84%E8%BF%9B%E8%A1%8C%E8%B5%84%E6%BA%90%E9%99%90%E5%88%B6%EF%BC%9F.png)
我们有一个 centos8 网络服务器,托管数百个网站,使用 3 个服务:apache、mariadb 和 php-fpm。由于 apache 和 mariadb 不支持每个帐户的资源限制,因此所有网站对许多系统资源(存储、数据库)的访问权限相同,单个网站可能会使机器过载(通常是通过数据库查询发生的),并导致托管在那里的所有网站瘫痪。
我们希望使用 Linux cgroups 和可能的其他容器功能来限制一个网站可以使用的资源,主要是每秒 php 进程的数量和 I/O 操作和数据库查询的数量。
实现此目的的一种(不一定是性能最佳的)方法是为每个网站或网站组运行一组专用的服务(apache+mariadb+php-fpm),并配置特定的资源限制。这样,就可以同时运行数百个服务组。
从现有的 3 个服务设置中,更直接的设置方法是什么?性能是次要的,我们不想创建和运行数百个容器镜像。相反,我们希望在根文件系统中以易于运行时修改的形式定义所有内容,并通过 systemd 控制所有服务。因此,没有 docker 容器。