вопрос
Постоянно приходят письма о превышение потребление CPU и MySQL. Приходится постоянно повышать тариф из-за этого.Обратился в поддержку.
Вот ответ:
Что это такое и как с этим разбираться?
Вот ответ:
Повышенное потребление ресурсов вызвано увеличением количества запросов к сайту. Обращения поступают как от известных поисковых роботов:
[10/Jan/2019:12:49:44 +0300] 0.946 0.950 200 141.8.142.104 ranobeonline.ru GET /8562-glava-1002.html HTTP/1.1 "Mozilla/5.0 (compatible; YandexDirect/3.0; +http://yandex.com/bots)" "-" 23473 141.8.194.54 a0187971
[10/Jan/2019:12:49:45 +0300] 1.000 1.002 200 141.8.142.126 ranobeonline.ru GET /8562-glava-1002.html HTTP/1.1 "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" "-" 23473 141.8.194.54 a0187971
Так и с других различных IP-адресов:
[10/Jan/2019:12:49:49 +0300] 0.050 0.050 200 83.220.236.248 ranobeonline.ru GET /engine/modules/antibot/antibot.php HTTP/2.0 "Mozilla/5.0 (Linux; Android 7.0; Redmi Note 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.64 Mobile Safari/537.36" "https://ranobeonline.ru/6559-glava-170-stryapnya-zmeinyh-lyudey.html" 5901 141.8.194.54 a0187971
[10/Jan/2019:12:49:49 +0300] 0.700 0.750 200 91.224.68.236 ranobeonline.ru GET /63-world-defying-dan-god-bog-brosivshiy-vyzov-miru.html HTTP/2.0 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 YaBrowser/18.11.1.805 Yowser/2.5 Safari/537.36" "https://ranobeonline.ru/64-glava-1-100.html" 25459 141.8.194.54 a0187971
[10/Jan/2019:12:49:49 +0300] 0.900 0.950 200 81.198.30.5 ranobeonline.ru GET /7322-glava-418-yarost-rozhdenie-fioletovo-zolotogo-ognya.html HTTP/1.1 "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "https://ranobeonline.ru/7416-glava-419-krovavaya-koroleva-krasnaya.html" 61116 141.8.194.54 a0187971
Например, в 10-минутный период всплеска потребления 07:00-07:10 МСК поступило всего 1164 запроса.
При этом, с каждым обращением к сайту поступает большое количество запросов к базе данных, в результате каждого из которых выполняется обход 8643 строк. Пример запроса и его описание:
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[::]]' AND approve=1 AND date < '2019-01-10 10:37:59' ORDER BY date DESC LIMIT 0,5;
+----+-------------+-------+------------+-------+---------------+---------+---------+-------------------+------+----------+------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------------------+------+----------+------------------------------------+
| 1 | SIMPLE | p | NULL | range | approve,date | date | 5 | NULL | 8643 | 50.00 | Using index condition; Using where |
| 1 | SIMPLE | e | NULL | ref | news_id | news_id | 4 | a0187971_dle.p.id | 1 | 100.00 | NULL |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------------------+------+----------+------------------------------------+
[10/Jan/2019:12:49:44 +0300] 0.946 0.950 200 141.8.142.104 ranobeonline.ru GET /8562-glava-1002.html HTTP/1.1 "Mozilla/5.0 (compatible; YandexDirect/3.0; +http://yandex.com/bots)" "-" 23473 141.8.194.54 a0187971
[10/Jan/2019:12:49:45 +0300] 1.000 1.002 200 141.8.142.126 ranobeonline.ru GET /8562-glava-1002.html HTTP/1.1 "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" "-" 23473 141.8.194.54 a0187971
Так и с других различных IP-адресов:
[10/Jan/2019:12:49:49 +0300] 0.050 0.050 200 83.220.236.248 ranobeonline.ru GET /engine/modules/antibot/antibot.php HTTP/2.0 "Mozilla/5.0 (Linux; Android 7.0; Redmi Note 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.64 Mobile Safari/537.36" "https://ranobeonline.ru/6559-glava-170-stryapnya-zmeinyh-lyudey.html" 5901 141.8.194.54 a0187971
[10/Jan/2019:12:49:49 +0300] 0.700 0.750 200 91.224.68.236 ranobeonline.ru GET /63-world-defying-dan-god-bog-brosivshiy-vyzov-miru.html HTTP/2.0 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 YaBrowser/18.11.1.805 Yowser/2.5 Safari/537.36" "https://ranobeonline.ru/64-glava-1-100.html" 25459 141.8.194.54 a0187971
[10/Jan/2019:12:49:49 +0300] 0.900 0.950 200 81.198.30.5 ranobeonline.ru GET /7322-glava-418-yarost-rozhdenie-fioletovo-zolotogo-ognya.html HTTP/1.1 "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "https://ranobeonline.ru/7416-glava-419-krovavaya-koroleva-krasnaya.html" 61116 141.8.194.54 a0187971
Например, в 10-минутный период всплеска потребления 07:00-07:10 МСК поступило всего 1164 запроса.
При этом, с каждым обращением к сайту поступает большое количество запросов к базе данных, в результате каждого из которых выполняется обход 8643 строк. Пример запроса и его описание:
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[::]]' AND approve=1 AND date < '2019-01-10 10:37:59' ORDER BY date DESC LIMIT 0,5;
+----+-------------+-------+------------+-------+---------------+---------+---------+-------------------+------+----------+------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------------------+------+----------+------------------------------------+
| 1 | SIMPLE | p | NULL | range | approve,date | date | 5 | NULL | 8643 | 50.00 | Using index condition; Using where |
| 1 | SIMPLE | e | NULL | ref | news_id | news_id | 4 | a0187971_dle.p.id | 1 | 100.00 | NULL |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------------------+------+----------+------------------------------------+
Что это такое и как с этим разбираться?