今天,我们的 Web 服务器面临着非常高的 CPU 负载。我们的申请被冻结而不是反应。我们可以通过将最大执行时间设置为 180 到 90 秒来减少负载。
但是,日志文件现在充满了以下错误:
Maximum execution time of 90 seconds exceeded {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0):
大约每 10 秒,日志中就会出现一个此类新错误。
我们的应用程序的任何表单和脚本都不应该占用这么多的执行时间。因此我的问题是,如果这个错误日志可能是攻击的迹象(例如 DDoS)?另外,有没有机会找出触发错误的客户端的IP地址?
你已经告诉 PHP 杀死所有运行时间超过 90 秒的脚本,所以这就是你得到的。
理论和实践有时会出现分歧。您应该认真调试问题 - 查明长时间运行的脚本并找出它为什么这样做 - 深度日志和 URL/cookies/headers 分析,可能会增加日志级别。
这是一个非常危险的假设。很可能攻击仍在继续。目前,在攻击者真正发现安全漏洞之前可能还有时间解决问题(高负载会导致竞争条件,进而可能会打开循环漏洞)。至少,您的网站将对 DoS 进行一些强化。
您必须调试脚本、放置计时元素并添加到一些调试日志。我怀疑它的攻击,它可能是一些循环,在脚本中是出乎意料的。我编写了未捕获错误条件并创建了意外循环的脚本。我有根据的猜测,这正是正在发生的事情。
鉴于您的应用程序是完美的,并且无法确定导致问题的原因,您唯一的希望是像 Akamai 或 Cloudflare 这样的商业正常运行时间保存服务。