AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 790882
Accepted
Raffael
Raffael
Asked: 2016-07-21 02:11:44 +0800 CST2016-07-21 02:11:44 +0800 CST 2016-07-21 02:11:44 +0800 CST

为什么请求频率下降时响应时间会爆炸?

  • 772

更正:响应时间 ( %D) 是 μs 而不是 ms!1

这并没有改变这种模式的怪异之处,但这意味着它实际上具有更少的破坏性。


为什么响应时间与请求频率成反比?

当处理请求不那么忙时,服务器不应该更快地响应吗?

有什么建议可以让 Apache “利用”更少的负载吗?

在此处输入图像描述

这种模式是周期性的。这意味着如果印象数下降到每分钟约 200 个请求以下,它就会显示出来——这种情况从深夜到清晨发生(由于自然的用户活动)。


请求是非常简单的 POST,发送少于 1000 个字符的 JSON - 此 JSON 已存储(附加到文本文件) - 就是这样。回复只是“-”。

图中显示的数据是由 Apache 本身记录的:

LogFormat "%{%Y-%m-%d+%H:%M:%S}t %k %D %I %O" performance
CustomLog "/var/log/apache2/performance.log" performance
apache-2.4 high-load ubuntu-14.04
  • 6 6 个回答
  • 3210 Views

6 个回答

  • Voted
  1. Best Answer
    BillThor
    2016-07-21T05:38:38+08:002016-07-21T05:38:38+08:00

    这是数据中心的常见行为。您的响应时间变慢的时间对应于通常所说的批处理窗口。这是预计用户活动较低且可以运行批处理的时间段。在此期间也会进行备份。这些活动可能会使服务器和网络资源紧张,从而导致性能问题,如您所见。

    有一些资源可能会导致问题:

    • 高 CPU 负载。这可能会导致 Apache 等待时间片来处理请求。
    • 高内存使用率。这可以刷新缓冲区,使 Apache 无需从磁盘读取资源即可提供资源。它还可能导致 Apache 工作人员的分页/交换。
    • 高磁盘活动。这可能会导致磁盘 I/O 活动在提供内容时出现相应的延迟排队。
    • 网络活跃度高。这可能会导致数据包排队等待传输、增加重试次数并以其他方式降低服务质量。

    我sar用来调查这样发出的。 atsar可用于将sar数据收集到日常数据文件中。可以检查这些以查看系统行为在白天性能正常时和夜间性能变化时的情况。

    如果您正在使用munin收集和绘制资源利用率图表的其他系统来监控系统,您可能会在那里找到一些指标。我还是觉得sar更准确。

    有一些类似的工具nice可以ionice应用于批处理,以尽量减少它们的影响。它们仅对 CPU 或 I/O 问题有效。它们不太可能解决内存或网络活动的问题。

    将备份活动移至单独的网络可以减少网络争用。一些备份软件可以配置为限制将使用的带宽。这可以解决或减少网络争用问题。

    根据触发批处理的方式,您可以限制并行运行的批处理数量。这实际上可能会提高批处理过程的性能,因为它们可能会遇到相同的资源争用。

    • 31
  2. Karol Nowak
    2016-07-21T07:24:15+08:002016-07-21T07:24:15+08:00

    如果请求发送者在提交新请求之前等待先前请求完成,则这种关系可能会在另一个方向发生。在这种情况下,由于客户端排队,流量会随着请求时间的增长(无论出于何种原因)而下降。

    或者它可能是您的测量结果 - 如果上图显示已完成的请求,而不是到达的请求,则速率将随着请求处理时间的增长而下降(假设容量有限:D)。

    • 8
  3. abligh
    2016-07-21T09:05:49+08:002016-07-21T09:05:49+08:00

    尽管@BillThor 的回答可能是正确的,但低负载时段似乎不太可能完全被备份进程占用(即时段精确匹配)。

    另一种解释是简单的缓存。如果最近没有使用给定的脚本/数据库/任何东西,则相关的缓存数据可能已被删除,以便为操作系统的其余部分释放内存。这可能是数据库上的索引,或与文件相关的 O/S 缓冲区,或其他类似的东西。如果自上次查询以来已经有一段时间,查询将不得不重新构建此信息。在繁忙时期,这不会发生,因为最后一次查询会很频繁。这也可以解释为什么您在繁忙期间看到响应时间短而响应时间长。

    • 7
  4. Kaithar
    2016-07-22T00:16:52+08:002016-07-22T00:16:52+08:00

    在我看来,你在那里看到的看起来可能是一个统计问题。可能不是,@BillThor 的回答很可能是正确的,但为了完整起见,我会发布这个。

    响应时间图是基于百分位的。800-1000 个请求的样本池是一个很好的样本计数,50-100 个请求的池可能没有那么多。

    如果您假设慢请求的数量不是请求量的线性函数,即请求增加一个数量级不会导致慢请求增加一个数量级,那么更高的请求量将导致较低的平均请求时间。

    • 2
  5. kubanczyk
    2016-07-23T02:02:16+08:002016-07-23T02:02:16+08:00

    有谎言,大谎言和统计数据。

    我的假设:您有三个不同类别的请求:

    1. 包含大部分请求的正常变量流,这些都在 200-300 微秒内完成。
    2. 以每分钟约 20 个请求的恒定速率的小流(即使在晚上)。每个大约需要 2.500 μs 才能完成。
    3. 以每分钟约 10 个请求的恒定速率(即使在晚上)的微小流。每个都需要远高于 4.000 μs。

    晚上每分钟50个请求对应20+20+10。因此,50% 百分位数的结果现在很大程度上取决于流 2 的结果。而 95% 百分位数取决于流 3,因此它甚至永远不会显示在图表上。

    白天,流 2+3 很好地隐藏在 95% 百分位之上。

    • 0
  6. Nathan Webb
    2016-07-28T04:03:00+08:002016-07-28T04:03:00+08:00

    我越看越倾向于认为数据收集有问题。

    首先,您的 TPS 发生了一些非常奇怪的事情。虽然整体模式看起来很正常,但在晚上 9 点左右出现了一个非常急剧的突破,然后在早上 7 点左右再次出现。在过渡到非高峰时段期间,正常图表会更加平滑。

    这表明配置文件发生了变化,您可能有两种不同类型的客户:

    1. 仅在上午 7 点(ish)和晚上 9 点(ish)之间运行,并且流量很大,并且
    2. 另一个可能全天候运行,数量较少。

    第二个提示是 18:00 左右。之前和之后的大部分时间,我们都有高容量配置文件——高 TPS 和低延迟。但在 18:00 左右,从 800-1000 RPM 突然下降到低于 400 RPM。什么可能导致这种情况?

    第三个提示是第 5 个百分位响应时间的递减。实际上,我更喜欢查看最小响应时间(但第 5 个百分位数可能更好),原因有两个:它告诉我服务时间(即响应时间减去排队),响应时间倾向于遵循 Weibull 分布,这意味着模式(或最常见的值)略高于最小值。

    所以第 5 个百分位的降级对我来说意味着系列突然中断,服务时间实际上已经下降,尽管方差和平均响应时间都大大增加了。

    下一步

    在这个阶段,我会深入研究日志,以找出 18:00 的低容量样本与之前和之后的高容量样本有何不同。

    我会寻找:

    • 地理位置的差异(以防延迟影响 $request_time)
    • URL 的差异(应该没有)
    • HTTP 方法(POST/GET)的差异(应该没有)
    • 来自同一 IP 的重复请求
    • 以及任何其他差异...

    顺便说一句,18:00 的“事件”对我来说已经足够证明它与数据中心的拥塞/活动无关。要做到这一点,拥堵必须导致 TPS 下降,这在 18:00 是可能的,但极不可能导致 TPS 在晚上 9 点到早上 7 点之间的 10 小时内持续且平稳地下降。

    • 0

相关问题

  • Apache2 - SSL 不工作

  • Apache <VirtualHost> 标签,如果客户端的 IP = x 则不重定向... 怎么做?

  • 我无法启用我的网站?[关闭]

  • SELinux 阻止 Apache 写入文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve