我的生产drupal网站运行在EC2上。最近我们注意到我们的EC2 CPU利用率达到了100%。我检查了我的网站流量,那里的用户不多。我使用EC2命令检查了在top中运行的进程。我看到了一个命令jbd2_sda1-8。我不明白这个命令是用来干什么的。我看到该命令是由用户www-data调用的,它显示该命令的CPU使用率为200%。据我所知,www-data意味着命令是由运行在我的机器上的某个应用程序调用的。我使用PHP-7.1和Nginx作为我的drupal站点。我运行了命令sudo service php7.1-fpm restart。然后我检查了过程。这个过程被杀了。因此,我假设该命令是由某个php进程调用的。我检查了EC2监控,我的CPU使用率下降到了3%。
在大约一个小时的时间里,一切似乎都很好,突然,我再次从AWS那里得到警告,说CPU使用率很高。我做了同样的进程来调试。这一次我看到了一些不同的命令kjournald。这个过程占用了较高的CPU,这也来自于用户www-data。
我很困惑,我试图找出这个命令的含义,我什么也不明白,我也没有发现旧进程和新进程之间的任何关系。
这个问题一直在发生。如果我重新启动php,该进程将被终止,并且在一段时间后它将再次出现。我不知道是怎么回事。
我的试射实验:
我被困在这里了。不知道怎么回事。有人能帮忙吗?
发布于 2020-01-10 14:42:48
如果kjournald消耗了大量资源,这意味着您的操作系统正在执行大量日志操作,这些操作是由于文件系统(磁盘操作)的更改而产生的。
这意味着对文件系统的写入要比它应该做的要多得多,或者您的块存储存在一些问题。
使用lsof查看操作系统在任何给定时间都在使用哪些文件。
如果您的生产和暂存环境是同时在同一个AZ中使用相同的实例类创建的,并且您确信您的PHP应用程序设计得很好(如果它的Drupal是正确的),并且您最近没有更改任何东西,那么我会考虑重新配置EC2实例。
创建快照并重新部署,最好是在不同的实例类上,以确保您移动到不同的基础结构堆栈。
我猜想这些实例都是EBS支持的,在这种情况下,它们可能在AWS中使用一些已经损坏的块存储。
https://serverfault.com/questions/998459
复制相似问题