【问题标题】:How to check if clients are starved in an apache server?如何检查客户端是否在 apache 服务器中饿死?
【发布时间】:2017-09-23 15:29:09
【问题描述】:

您将如何监控服务器性能:

  1. 计算已超时且根本没有处理的请求(客户端被饿死)

  2. 计数在处理过程中超时的请求

  3. 至少在 apache lvl 中计算因错误而失败的请求

谢谢

【问题讨论】:

  • 据我所知,除了server status,Apache 不支持这种特性。但是nginx 提供了更多的指标,几乎包括你需要的Read this。如果您尝试托管 php Web 应用程序,则可以在这种情况下迁移到 nginx。
  • @ImeshaSudasingha 不错的工具...将阅读此内容并查看...请回答
  • 完成!添加为答案
  • 为工具更换服务器并不是一件好事,据说 apache 服务器也有各种日志分析器,如果你只是在寻找它,answer 提供了全面的答案。跨度>

标签: apache http server admin


【解决方案1】:

计算已超时且根本没有处理的请求(客户端被饿死)

这取决于您使用的平台以及 apache 服务器的用途。如果将 apache 服务器用作某些网站的后端,您可以为客户端(网站用户)发出的每个请求添加时间戳,或者让客户端使用相关时间戳跟踪它执行的请求。将此数据发送到服务器,并让服务器将这些数据与它自己的日志进行比较。

因此,我建议在客户端和服务器端跟踪所有接收和发送的请求及其附加状态(成功或失败、时间戳)。

对于更具体的信息,我认为更多关于实际实施的背景信息是必须的。

【讨论】:

    【解决方案2】:

    据我所知,Apache 不支持 server status 以外的此类功能。但这并没有包含足够的指标来满足您的要求。

    nginx 提供的指标更多,几乎包括您需要的指标。

    Nginx 开源版本支持以下指标,

    • 接受/接受
    • 已处理
    • 掉落
    • 有效
    • 请求/总数

    请参考this article。如果您尝试托管 php web 应用程序,则可以在这种情况下迁移到 nginx。

    【讨论】:

      【解决方案3】:

      我不是这种情况的专家,但这是我的看法,

      请求超时会在日志中生成 408 错误,该错误是可计数的,并且 apache 提供了一个变量 %D 来测量进程时间。

      计算已超时且根本没有处理的请求 (客户饿死了)

      如果没有处理时间或最少,那么您可以假设请求根本没有处理。

      计算在处理过程中超时的请求

      与以前的理论相反,您将需要一些时间来记录处理。

      至少在 apache lvl 中计算因错误而失败的请求

      你肯定会因为 apache 遇到的任何原因得到错误日志。

      在这种情况下,keep alive 的作用是另一回事。

      Apache 2 和 2.4 中的日志记录方法有所不同,请记住这一点,但常见的日志记录格式会导致结果。

      编辑

      如果您正在寻找可以为您提供一些见解的工具,请尝试以下方法,Apache httpd 服务器确实提供了 nginx 和其他服务器可以提供的所有必要见解。

      https://logz.io/

      http://goaccess.prosoftcorp.com/

      http://awstats.sourceforge.net/

      参考:

      http://httpd.apache.org/docs/current/mod/mod_log_config.html https://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html https://httpd.apache.org/docs/2.4/logs.html

      【讨论】:

        猜你喜欢
        • 2012-04-29
        • 2012-11-12
        • 2021-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多