Как отследить источник запросов к SQL

Kaavain
На сайте с 28.07.2015
Offline
133
735

Имею два разных VPS с одинаковыми абсолютно CMS и одинаковыми сайтами на них. Разница - в посещаемости и панелях. Но не думаю, что в панели дело.

Сервер А: посещаемость 100, запросов к mysql 7 (семь) в секунду, самый частый select (63.% select, 19% set options, 9% delete и далее) uptime 306 days 13 hours 3 minutes

Сервер Б: посещаемость 50 (вдвое ниже),  запросов к mysql 450 (четыреста пятьдесят!!!) в секунду, самый частый select (99.% select, 0,01% set options и далее исчезающе)  Uptime: 683:07:36:35

И так - одень длительное время, не обращал внимания ибо вроде работает и ладно. А тут посмотрел на статистику ЦП, а тааам... А = стабильно 1-2%, Б = скачет от 2 до 100, в среднем 20%. При этом основное - mysql

Включил аксесс лог - ничего криминального, в минуту 20 хитов.

БД перегружал. Сервер не перезагружал, но он сам себя-то долбить не может? Куда копать?

Могу порекомендовать только хостинг: https://traf.at/vps - за 3 года все на 4++ и цены не подняли. Ну и банк для белых ИП: https://traf.at/bankm
D
На сайте с 05.02.2022
Offline
32
#1
Ну так включите и посмотрите логи запросов.
Kaavain
На сайте с 28.07.2015
Offline
133
#2
dzthd #:
Ну так включите и посмотрите логи запросов.

Чуть выяснил. Явно кто-то долбится в сайт, так как сайт один в этой панели, я его на пару минут отключил - сразу и запросов стало в норме, и тормозов нет.

Непонятно, почему в аксесс логе всего немного - 21 хит в минуту, это даже не раз в секунду...

А какие логи можно включить?

Kaavain
На сайте с 28.07.2015
Offline
133
#3
Kaavain #:

Чуть выяснил. Явно кто-то долбится в сайт, так как сайт один в этой панели, я его на пару минут отключил - сразу и запросов стало в норме, и тормозов нет.

Непонятно, почему в аксесс логе всего немного - 21 хит в минуту, это даже не раз в секунду...

А какие логи можно включить?

Так, логи я разобрался. Включил... Выяснил что на генерацию 1 страницы приходится 1150 запросов. типа SELECT. Возник вопрос... 

1. Это типа норм? Большинство запросов простые SELECT aaa FROM bbb WHERE ccc

2. Нашел такие запросы: SELECT id, id_parent FROM `content` WHERE id=ххх - это что, косяк программиста? Зачем СЕЛЕКТ айди когда ГДЕ айди = ...?

GRAFLEKX
На сайте с 05.11.2010
Offline
200
#4
Kaavain #:
Выяснил что на генерацию 1 страницы приходится 1150 запросов.

О_О

Сломайте программисту пальцы - он больше ничего не должен писать.

Мы поможем в поиске работы: стабильная работа для вас ( https://www.rabota.ru ), вакансии и резюме.
Sly32
На сайте с 29.03.2012
Offline
303
#5
Kaavain #:
Нашел такие запросы: SELECT id, id_parent FROM `content` WHERE id=ххх - это что, косяк программиста? Зачем СЕЛЕКТ айди когда ГДЕ айди = ...

Это косяк в твоих знаниях. >15 делать сайты и не понимать примитивный SQL запрос... как ты хочешь чтобы выборка работал без айди? Ну блин, это же полчаса доку базрвую прочитать!

Если ты не ериво посмотрел, то более 1000 запросов при создании страницы это конечно жесть.

Snake800
На сайте с 02.02.2011
Offline
215
#6
Kaavain #:
SELECT id, id_parent FROM `content` WHERE id=ххх

Очень похоже, что это запрос из цикла кода, строящего какой-то иерархический список.

Snake800
На сайте с 02.02.2011
Offline
215
#7
Kaavain #:
Зачем СЕЛЕКТ айди когда ГДЕ айди = ...?

Это не сильно критично. Id всё равно (наверное) кластеризованный индекс, его включение в select при условии отбора по id не стоит и копеек. А вот качество кода без него может заметно страдать или быть обусловлено требованиями фрэймворка.

Kaavain
На сайте с 28.07.2015
Offline
133
#8
Sly32 #:
Это косяк в твоих знаниях. >15 делать сайты и не понимать примитивный SQL запрос...

Я никогда не говорил, что 15 лет ДЕЛАЮ сайты. Я 18 лет на нем ЗАРАБАТЫВАЮ, а делать начал когда понял, что мелкие доделки меня разорят и затянутся до второго пришествия.

Snake800 #:
Очень похоже, что это запрос из цикла кода, строящего какой-то иерархический список.

Именно. Там строятся линки меню и путей. Но вопрос не в этом...

Sly32 #:
как ты хочешь чтобы выборка работал без айди

Не хочу. Вопрос был зачем SELECT id когда id - известно и торчит там же: WHERE id= ???

Snake800 #:
его включение в select при условии отбора по id не стоит и копеек.

Да, я глянул ниже по коду, возможно id удобнее потом брать из массива, полученного выполнением запроса... Но - нет. 

Sly32 #:
то более 1000 запросов при создании страницы это конечно жесть.

Вот тут, хоть я и лох, но мне кажется что 1000 запросов типа  SELECT id, id_parent FROM `content` WHERE id=ххх померкнут перед одним сложным и корявым.... Не? 

Kaavain
На сайте с 28.07.2015
Offline
133
#9

Короче, картина слегка проясняется. Логу можно верить, буду надеяться что 90% запросов торчат перманентно в кеше, в котором порядка 16 000 штук сидит. Зря он чтоль 64 мега.

Возник другой вопрос. Я озадачился, почему у меня 450 запросов в секунду, и не значит ли это что студены шалят. Но простое умножение: примерно 30 хитов в минуту, это 0.5 в секунду = примерно 500 запросов и так оно и есть. Так что вроде тут все сходится.

Но тут же становится непонятным - почему на втором сервере, где все точно такое же, причем посетителей минимум вдвое больше (а то и в 10 раз) значение запросов в секунду всего СЕМЬ???

Главное я полез на третий мой сервер, где посещаемость меньше второго, но ЦМС более запросопрожорливая - и там тоже 7 запросов в секунду. Как так?

В голову приходит только одно: PHPmyadmin РАЗНЫХ ВЕРСИЙ по-разному считает число запросов... Может такое быть?

LEOnidUKG
На сайте с 25.11.2006
Online
1723
#10
GRAFLEKX #:

О_О

Сломайте программисту пальцы - он больше ничего не должен писать.

Среднестатистический интернет магазин на WP+WC.

И перегруженный какой-нибудь Opencart 

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий