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

Ускорение загрузки главной и категорий на сайте с 10 млн новостей


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

На сайте 10 млн новостей. Одна новость и комментарии к ней загружается быстро, но главная, страница категорий и редактирование новостей в админке не загружаются

Вопрос, как ускорить загрузку? В каких файлах нужно сделать изменения?

Как я понял, проблема в запросе SELECT COUNT, который и тормозит загрузку из-за большой БД

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

Вот этот код в файле show.short.php

$count_all = $db->super_query( $sql_count );
		
		if($news_found AND !$count_all['count']) {
			$db->query("ANALYZE TABLE `" . PREFIX . "_post`, `" . PREFIX . "_post_extras`");
			$count_all = $db->super_query( $sql_count );
		}
		
		$count_all = $count_all['count'];

Менял на этот:

	//	$count_all = $db->super_query( $sql_count );
		
		if($news_found AND !$count_all['count']) {
		//	$db->query("ANALYZE TABLE `" . PREFIX . "_post`, `" . PREFIX . "_post_extras`");
		//	$count_all = $db->super_query( $sql_count );
		}
		
	//	$count_all = $count_all['count'];
		$count_all = 300;

Этим изменением удалось добиться загрузки страниц категорий

Также я заменил пагинацию на ajax подгрузку

Может стоит еще смотреть в сторону allow_main?

VDS у меня 2 ядра, 4 ГБ памяти

Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, crafic сказал:

allow_main, fixed, where date<... - убрать 

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

Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, celsoft сказал:

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

Естественно все отключено по максимуму, но страницы категорий и главная не загружаются с ошибкой Internal Server Error

Попробую в базе allow_main 1 оставить только у пары сотен новостей и убрать из запроса сортировку

Как я понял, другого решения нет. Ни одна CMS не справляется с таким объемом. DLE единственная может быстро открывать страницы постов, только нужно разобраться с главной и категориями

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

Естественно все отключено по максимуму, но страницы категорий и главная не загружаются с ошибкой Internal Server Error

Я не удивлен, при том что вы указали 10 млн. новостей и данные своего сервера:

16.05.2022 в 19:21, garrix сказал:

VDS у меня 2 ядра, 4 ГБ памяти

Видимо вы память под свои данные, служебные ключи и прочее и прочее собираетесь брать из воздуха. 4 ГБ памяти это на все !!!! на работу OS, сотен процессов различного серверного ПО и т.д. Куда все все помещать будете? плюс два ядра на обработку данных, при условии что соседи ничего не выгребают с процессора.

Ничего не берется из ниоткуда и не пропадают в никуда. Для 10 млн публикаций не то что о мощном отдельном тщательно оттюнингованном в плане серверных настроек нужно задумываться нужно, а возможно даже о кластере.

А вы калькулятором такой обьем данных переварить собираетесь.

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

Для 10 млн публикаций не то что о мощном отдельном тщательно оттюнингованном в плане серверных настроек нужно задумываться нужно, а возможно даже о кластере

В этом и загвоздка, что на мощный сервер жалко тратить деньги. Вот у соседа моего нормально работает сайт с 8-9 миллионами новостей на слабеньком VDS. Как он это все настроил естественно не говорит. Обратил внимание, что в таблице dle_post у него нет столбца allow_main (do=stats выдает ошибку). Еще он использует кеширование, от Cloudflare вроде

Уже писал, напишу еще раз, что страницы новостей (10 млн) и комментарии (15 млн) к ним подгружаются быстро, в отличии от Wordpress, Joomla, Processwire и др., перепробовал практически всё за 2 года. В этом есть очень большой успех 👍

Я же в верном направлении иду? Пагинацию заменил на ajax подгрузку, чтобы мой калькулятор не считал кол-во страниц. Убрал из запроса ORDER BY и главная загрузилась, уже лучше, но грузилась секунд 20. Еще напишу здесь, что в итоге получилось. Мне на главной и в категориях пока не так важно, как сортировать, главное чтобы хоть что-то было

Изменено пользователем garrix
Ссылка на сообщение
Поделиться на других сайтах

Как и обещал пишу, что получилось. Теперь все страницы открываются очень быстро, несмотря на мой калькулятор. Нужно было внести правки в файл show.short.php и engine.php

В show.short.php отключить подсчет количества новостей ($count_all). А в engine.php нужно было убрать сортировку из запроса к базе (ORDER BY)

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

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

Он их считает в любом случае. Если не править файлы скрипта. 

12 часов назад, garrix сказал:

Убрал из запроса ORDER BY

Вы убрали сортировку, а значит порядок вывода будет не предсказуемым. Результаты будут меняться. Тут уж как MySQL решит и как ему удобней.

 

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
18.05.2022 в 09:32, garrix сказал:

Как и обещал пишу, что получилось. Теперь все страницы открываются очень быстро, несмотря на мой калькулятор. Нужно было внести правки в файл show.short.php и engine.php

В show.short.php отключить подсчет количества новостей ($count_all). А в engine.php нужно было убрать сортировку из запроса к базе (ORDER BY)

Может проще вам тогда будет через Redis выполнить вашу задачу по улучшению в быстродействии вашего VDS. Рассудите сами, вы имеете достаточное количество ресурсов для размещения redis.

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

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

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

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

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

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

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

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

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

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