Apache 进程以 100% 运行,没有流量 - 我如何才能知道发生了什么?

Apache 进程以 100% 运行,没有流量 - 我如何才能知道发生了什么?

我有一台运行 Apache 的服务器,偶尔会看到 Apache 进程达到 100% 并停留在那里。今天,有两个进程达到 100%,我关闭了对服务器的外部访问(以防止进一步向 Apache 发出请求)。五分钟后,没有任何请求进入服务器,但两个进程仍处于 100%。

我在每个进程上运行过lsof,它们给了我大约 9000 行输出(对我来说可能有点难以理解)。其他进程似乎没有出现异常行为或等待等情况。

我的数据库位于第二台服务器上。使用mytop显示来自 Apache 服务器的两个 MySQL 连接处于活动状态,均处于“睡眠”状态。我终止了其中一个 MySQL 线程,Apache 服务器上的任何一个进程均未发生任何变化。

这个 Apache 服务器是简单负载平衡器后面的两个服务器之一。我不知道这是否相关。

我如何确认 apache 问题与我在数据库服务器上看到的问题有关?这可能是不可靠的 SQL 调用造成的,还是其他原因造成的?

编辑:发现问题。这是 Magento 的代码问题。图像调整大小功能无法打开图像,因为扩展名不正确(它是带有 jpg 扩展名的 BMP)。此错误处理程序再次调用调整大小,然后出现循环。在strace行为不当的 apache 进程上执行时发现了此问题。

答案1

找到问题了。这是 Magento 的一个代码问题。图像调整大小功能无法打开图像,因为扩展名不正确(它是带有 jpg 扩展名的 BMP)。此错误处理程序正在再次调用调整大小,然后出现一个循环。通过对行为不当的 apache 进程执行 strace 发现了这个问题。

答案2

也许您的 Apache 已经过时并且容易受到最近的范围请求漏洞的影响,并且现在有人或某物正在利用它?

相关内容