Перейти к публикации

DLE 14 - MYSQL создаёт огромное число запросов


Рекомендованные сообщения

Система установлена на VPS.

Конфигурация: 4x3.4ГГц, 8Гб RAM.

И при этом MYSQL её кладёт записывая тысячи файлов в минуту, складывает это всё дело на сервере в папку /home/user/tmp/

Складывает сюда файлы сессий вида: sess_vvudbhidkmpfvedca3eee3t19d

С содержимым вида: mobile_disable|i:0;mobile_enable|i:0;state|b:0;referrer|s:1:"/";

Помогает только периодическая очистка этой директории, а именно раз в минуту по крону вычищаю и при этом сайт всё-равно жутко тормозит.

 

В момент зачистки на сайте выводится запись вида:

Цитата

MySQL Error!
MySQL error in file: /engine/modules/functions.php at line 1650
Error Number: 1
The Error returned was:
Can't create/write to file '/tmp/#sql-temptable-321-30bc83-133.MAI' (Errcode: 2 "No such file or directory")
SQL query:

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 INNER JOIN (SELECT DISTINCT(dle_post_extras_cats.news_id) FROM dle_post_extras_cats WHERE cat_id IN ('89','88','86','24','23')) c ON (p.id=c.news_id) LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE approve=1 AND date < '2024-06-28 09:50:20' ORDER BY date DESC LIMIT 0,1

 

Как понимаю что-то не так с кэшированием, а именно здесь в коде:

		} else $sql_count = "";

		$tpl = new dle_template();
		$tpl->dir = TEMPLATE_DIR;				
		$tpl->is_custom = true;

		$tpl->load_template( $custom_template . '.tpl' );
	
		$sql_select .= " WHERE ".implode(' AND ', $where)." ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;

		$sql_result = $db->query( $sql_select );

Самая нижняя строка кода это и есть искомая 1650я.

Кто может подсказать, что делать в этой ситуации? Поможет ли обновление до новой версии?

Ссылка на сообщение
Поделиться на других сайтах

В логах сервера выдаёт ошибку:

Цитата

1024 worker_connections are not enough while connecting to upstream

Увеличение этого числа до 10000 ситуацию никак не меняет...

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, scheffbest сказал:

И при этом MYSQL её кладёт записывая тысячи файлов в минуту, складывает это всё дело на сервере в папку /home/user/tmp/

Складывает сюда файлы сессий вида: sess_vvudbhidkmpfvedca3eee3t19d

С содержимым вида: mobile_disable|i:0;mobile_enable|i:0;state|b:0;referrer|s:1:"/";

Это PHP сессии а не MySQL. И MySQL тут не причем. PHP создает одну сессию на одного посетителя. Поэтому если у вас тысячи новых файлов в минуту, то это тысячи реальных обращений к сайту от разных клиентов. То есть DDOS. По логам сервера блокируйте в файерволле IP тех кто досит или подключайте сервисы защиты от DDOS атак

6 часов назад, scheffbest сказал:

Как понимаю что-то не так с кэшированием, а именно здесь в коде

Не правильно понимаете. В момент очистки вы просто удаляете служебных файл MySQL и поэтому получаете ошибку от MySQL сервера.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...