【问题标题】:Getting CPU/disk usage/traffic statistic per domain for Nginx + php-fpm为 Nginx + php-fpm 获取每个域的 CPU/磁盘使用/流量统计
【发布时间】:2013-09-18 11:13:34
【问题描述】:

祝大家今天好!

我遇到了以前从未遇到过的问题,半天的谷歌搜索(还专门查看了 StackOverflow、Nginx 社区等)发现没有任何用处。

我有一台安装了 Nginx (1.4) + PHP-fpm (5.4) 的服务器。 Nginx 配置中有大约 100 多个服务器(域)。事实上,这些域“属于”不同的人,我需要知道 Nginx 和 PHP 对每个域的总体 CPU、磁盘和流量使用情况。我可以通过分析访问日志轻松计算流量使用情况,因为我不知道如何分别获取每个域的 CPU 和磁盘使用情况:( 统计数据不需要是实时的 - 如果我得到每天的总体值,没关系。统计数据不需要精确 - +/-10% 绝对可以。但我仍然没有看到任何有用的解决方案。

提前感谢您的任何想法!

附:我知道我可以为每个网站运行单独的 OpenVZ 机器,它可以让我轻松测量每个网站的 CPU 和磁盘使用情况,但我不喜欢这个解决方案。请帮我寻找替代方法!

【问题讨论】:

    标签: php nginx


    【解决方案1】:

    据我所知,无论是 Nginx,PHP-FPM 都没有内置对此类 metrix 的支持;因此,似乎没有办法衡量 Nginx 内部每个站点的资源消耗。但是有一个技巧可以衡量 PHP 使用的资源(如果 DB 在单独的机器上,这些资源几乎总是至少占所有消耗资源的 95%)。为此,我们必须在 PHP-FPM 配置中为每个站点创建一个单独的池:

    [site-A]
    listen = /var/run/php5-fpm.A.sock
    user = user-A
    group = user-A
    (...)
    
    [site-B]
    listen = /var/run/php5-fpm.B.sock
    user = user-B
    group = user-B
    (...)
    

    然后我们需要设置 Nginx,以便它使用每个站点的适当套接字将请求传递给 FCGI。 瞧,现在我们可以使用标准会计实用程序来衡量每个用户的资源消耗,实际上这意味着每个站点的数据。这些数据仍然没有考虑 Nginx 本身消耗的资源;但是,据我所知,它仍然比我希望的 90% 精度要好得多。为了让事情变得更好,我可以为每个站点使用单独的日志来计算静态文件的流量,这个值显然非常接近 Nginx 本身的磁盘使用量。因此,我不会错过提供大量静态文件而 PHP 的资源消耗适中的网站。

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 1970-01-01
      • 2017-11-02
      • 2018-01-22
      • 1970-01-01
      • 2019-02-01
      • 2012-10-14
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多