centos 找出持续停机以及高RAM和交换使用率的原因

dxpyg8gm  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(144)

我有一个运行Plesk的网络服务器,通过“由nginx提供的PHP-FPM”来服务网站。我注意到每天都有几次停机,对于一些域,但不是所有的域。每天停机的域是随机的,它们每天都不一样。在网站“停机”的时候,我注意到高RAM和SWAP的使用,大部分来自mysqld和php-fpm进程。我在下面附上一个截图。

到目前为止,我已经尝试过:

  • 进程及其RAM使用情况

ps -o pid,用户,%mem,命令ax|排序-B -k3 -r

  • 通过IP进行并发连接,以发现可能的基于HTTP的DDoS攻击

netstat -网络状态|grep 'TCP协议|用户数据报'| awk '{打印$5}'|剪切-d:-f1|分类器|唯一-c|分类器

  • 实时查看所有域上的GET和POST请求,以发现任何可疑情况

tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0)〉〉2):4] = 0x47455420或tcp[((tcp[12:1] & 0xf0)〉〉2):4] = 0x504F5354'

  • mysqltuner.pl以获取建议
  • 更改了FPM设置,并使用它们玩了一个多星期,最后由于没有效果而将其恢复为默认值

似乎没有任何东西能揭示问题的原因。而且,重新启动任何服务(fpm服务或mysqld)也不能解决这个问题。

qf9go6mv

qf9go6mv1#

PHP能够告诉您当前执行使用的内存使用情况,因此您可以添加调试error_log调用,并将memory_get_usage()添加到您传递给日志的输出中,然后您可以缩小内存使用量大幅增加的原因,然后您必须了解该代码在做什么。
但是,跳出编码,找出原因,这就是为什么大型生产系统不应该在一个服务器上同时运行DB和PHP的原因。因为同时运行这两个服务器意味着您将有重复的内存用于进入DB的内容。PHP中的内存用于应用程序构建查询字符串,然后MySQL服务器接收它进行处理,两个单独的服务器可以防止重复的内存使用。

kt06eoxx

kt06eoxx2#

你的WordPress站点正被机器人锁定,它们会定期尝试破解站点密码,每次破解一个字母,并随机切换目标站点以避免被检测到。这对于WordPress站点来说非常常见,特别是那些有支付网关,但没有重命名或保护wp-login.php文件的应用程序。有很多不同的插件可以保护你的wp-登录页面从这些类型的攻击。我会非常惊讶,如果原因是其他的东西。
Bot也可以在不同IP地址的僵尸网络上运行,因此它们能够避开检测。尝试解析nginx日志文件中的“wp-login.php”或“wp-admin”或“admin-ajax”,这些都是常见的攻击载体。

相关问题