1
tunggt 2023-09-15 13:07:40 +08:00
看看是不是数据库的问题,
另外你 WordPress 大概多少文章?有无安装其他插件? |
2
dctxf 2023-09-15 13:47:22 +08:00
我的也是,我怀疑是带宽占满或者内存占满,一般我都会过段时间清空一下。要玩还是买国外服务器吧
|
3
andypp 2023-09-15 14:58:19 +08:00 via Android
我也。感觉太 low 了,动不动就需要重启
|
4
opengps 2023-09-15 15:00:15 +08:00
从阿里云网页看下,cpu 满载的时间点,看看有没有什么特征(这一步主要是为了找那种定时任务类的进程)
|
5
wonderfulcxm 2023-09-15 15:03:31 +08:00
思路就是先看日志,看看 nginx/apache/php-fpm/mysql 的日志
|
6
opengps 2023-09-15 15:05:21 +08:00
对了,第二个办法是,对于连续运行的进程,看累计 cpu 消耗量,从这个角度排队逐个检查
|
7
JayZXu 2023-09-15 17:15:59 +08:00
是不是内存满了?我腾讯云的轻量就是内存一满,CPU 就满载卡死
|
8
cxh116 2023-09-15 17:41:54 +08:00 via Android
运行 dmesg 命令,看有没有 OOM killer 信息
|
9
northbrunv 2023-09-15 18:04:40 +08:00
换 ryzen 、epyc 提高性能
|
10
1dian01 OP @wonderfulcxm 宕机前 5 分钟有这样一段慢日志,没看懂,可否帮忙看看,谢谢
# Time: 230915 9:07:00 # User@Host: root[root] @ localhost [] # Query_time: 3.579496 Lock_time: 0.000057 Rows_sent: 723 Rows_examined: 739 use xxxxxxoxg; SET timestamp=1694740020; SELECT option_name, option_value FROM bbb_options WHERE autoload = ' yes '; # Time: 230915 9:08:02 # User@Host: root[root] @ localhost [] # Query_time: 4.918583 Lock_time: 0.072429 Rows_sent: 723 Rows_examined: 739 SET timestamp=1694740082; SELECT option_name, option_value FROM bbb_options WHERE autoload = ' yes '; # Time: 230915 9:08:50 # User@Host: root[root] @ localhost [] # Query_time: 5.088697 Lock_time: 0.000032 Rows_sent: 723 Rows_examined: 739 SET timestamp=1694740130; SELECT option_name, option_value FROM bbb_options WHERE autoload = ' yes '; # Time: 230915 9:09:45 # User@Host: root[root] @ localhost [] # Query_time: 4.839372 Lock_time: 0.009142 Rows_sent: 723 Rows_examined: 739 SET timestamp=1694740185; SELECT option_name, option_value FROM bbb_options WHERE autoload = ' yes '; /www/server/mysql/bin/mysqld, Version: 5.5.62-log (Source distribution). started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument |
11
1dian01 OP @cxh116 感谢,直接 ssh 上去,运行的 dmesg 命令,出来了一堆信息,搜索没有 OOM ,估计不是内存爆了
|
12
wonderfulcxm 2023-09-16 14:24:03 +08:00 via iPhone
@1dian01 这个 WordPress 加载 option 表配置的查询,相当注册表。你可以给它加上索引优化。
alter table bbb_options add index autoload_idx(`autoload`); 极端情况下可以导致 CPU200%占用,系统负载 3-6 ,新版的 wp 据说已经加上了索引。不知道你的 wp 版本是多少。这里有相关讨论: https://wordpress.stackexchange.com/questions/98284/how-come-wp-options-table-does-not-have-an-index-on-autoload/98287#98287 另外,有些插件或主题也会缓存数据这个表里,日趋庞大,就是以_transient 开头的项目,长期不用可以清除一下这些数据。 DELETE FROM bbb_options WHERE option_name REGEXP '_transient_' |
13
wonderfulcxm 2023-09-16 14:27:24 +08:00 via iPhone
不过这个慢查询也可能是资源不足导致的后果而不是导致卡死的原因。看一下那段时间的网络请求数目和流量情况。流量在 vps 服务商应该都有。
|
14
1dian01 OP @wonderfulcxm
这个时间点 ECS 同时连接数有个峰值为 123 ,9 点 6 分开始的,持续 3 分钟,带宽还好,没有特别大的峰值,另外有一堆这样的日志,应该是被扫了,是不是我 vps 太弱了,这么一扫就能爆,有没有啥办法屏蔽一下这些扫描机器人 125.36.255.55 - - [15/Sep/2023:09:06:47 +0800] " GET /52hacker.asp HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 110.177.179.164 - - [15/Sep/2023:09:06:47 +0800] " GET /junior.htm HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 119.48.134.74 - - [15/Sep/2023:09:06:47 +0800] " GET /HACKED.html HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 123.245.25.51 - - [15/Sep/2023:09:06:47 +0800] " GET /hackway.asp HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 124.31.107.168 - - [15/Sep/2023:09:06:47 +0800] " GET /myup2.asp HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 122.96.28.64 - - [15/Sep/2023:09:06:47 +0800] " GET /king.txt HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 58.19.57.155 - - [15/Sep/2023:09:06:47 +0800] " GET /gddff.asp HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 43.248.108.195 - - [15/Sep/2023:09:06:47 +0800] " GET /hacker.php HTTP/1.1 " 404 162 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 139.170.203.51 - - [15/Sep/2023:09:06:47 +0800] " GET /net.asp HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " 124.117.193.3 - - [15/Sep/2023:09:06:47 +0800] " GET /jza.htm HTTP/1.1 " 499 0 "-" " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 " |
15
wonderfulcxm 2023-09-16 16:03:41 +08:00 via iPhone
@1dian01 可以在 apache/nginx 按 ua 屏蔽这些请求。让它们无法到达 php 和 mysql 处理的阶段,它们的特征很明显,IP 虽然有很多,但 ua 的 keyword 就是 Firefox/7.0.1 ,根据这个写规则来屏蔽。(应该没人用这么老旧的浏览器了,只能是爬虫)
如果觉得不够,还可以装上 WordPress 的一些 WAF 插件,就是应用防火墙。比如 Wordfence 。 |
16
1dian01 OP @wonderfulcxm 感谢
|
17
1dian01 OP @wonderfulcxm hi ,朋友,在网上找了一段代码,我是 nginx 服务器,帮忙看看是否 ok ,感谢
``` #禁止 Scrapy 等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #禁止指定 UA if ($http_user_agent ~* "Firefox/7.0.1") { return 403; } #禁止非 GET|HEAD|POST 方式的抓取 if ($request_method !~ ^(GET|HEAD|POST)$) { return 403; } ``` |