跟踪共享主机上单个网站的资源使用情况

跟踪共享主机上单个网站的资源使用情况

我有一个 Centos 6 Web 服务器(Apache-itk、PHP、MySQL),带有 ISPconfig。这个 Web 服务器上有大约 100 个网站,它们都属于我。我必须能够跟踪每个站点消耗了多少资源(流量、CPU、RAM),并可能找到一种方法来限制某些站点的资源,或者优先考虑其他站点。不使用虚拟化的最佳方法是什么?共享 Web 主机如何管理其资源?

编辑:

交通:ISPconfig 显示流量使用情况(站点->网络流量)。这对我来说足够了。

Apache 的 CPU 和 RAM:因为每个 apache vhost 都在不同的用户(MPM-itk)下运行,所以我只需要知道每个用户在一段时间内消耗了多少资源。(我试过 atop,但还不知道如何使用它)

mysql 的 CPU&RAM:这是最难的部分!所有 mysql 实例都在 mysql 用户下运行。如何跟踪每个 mysql 用户的 mysql 资源使用情况?

CloudLinux 和 BetterLinux 看起来很有趣,有免费的替代品吗?

答案1

CPU 和内存核算

利用cgroups中央处理器记忆控制器尤其如此。它们会为您提供有关资源使用情况的细粒度统计数据。不过,您可能需要调整设置,确保您的进程绑定到相关的控制组(因为您的站点在不同的系统帐户下运行,所以这应该不难实现)。

如果不使用 cgroups,你也可以安装陣容包并使用sa -m命令(事先使用 启用记账accton)。但是,这种方法只会记录已完成的进程。好的一面是,除了包设置和启用记账外,这不需要对系统进行任何更改。

MySQL 会计

这是最难的。由于所有网站都由一个 MySQL 实例提供服务(如果我理解正确的话),因此您不能依赖上述每个进程/用户的统计数据。不过确实存在一些解决方案:玛拉雅数据库Percona 服务器可以作为传统 MySQL 的替代品。任一产品都包含用户统计信息:在 MariaDB在 Percona 服务器中。这些统计数据可以让您简要了解不同用户如何使用您的数据库。

您也不应忽视传统方法:

  • show full processlist当您注意到数据库性能拥挤时,请进行SQL进程采样( );
  • 不要忽略慢速查询:启用慢查询日志mysqldumpslow并定期使用脚本(它包含在 MySQL 发行版中)。

相关内容