Перейти к содержимому


Фотография
- - - - -

timestamp / mysql-slow-queries / что делать БД падает :)

mysql-slow-queries

  • Закрытая тема Тема закрыта
Сообщений в теме: 20

#1 CB9TOIIIA

CB9TOIIIA

Отправлено 21 October 2014 - 10:20

Все доброго дня :)

 

Дано : Joomla: 3.3.6     JBZoo: 2.1.4 Pro     Zoo: 3.1.6    

 

Посещаемость: 30 000 и просмотры до 100 000.

Сервер XServer: CPU: Core i7 4770 4x3.4GHz; RAM: 16Gb; HDD: 2x 1Tb RE, 1x 60 Gb ssd

 

Spoiler

 

Сайт периодически падает (сапорт отвечает, сервер генерирует в какой-то момент тучу запросов и ложится) в логе mysql-slow-queries.log : 

 

Как можно оптимизировать под новостник? что-то убрать? может индексацию отключить и руками делать? 


Сообщение отредактировал CB9TOIIIA: 07 May 2015 - 07:24

  • 0

#2 SmetDenis

SmetDenis

Отправлено 21 October 2014 - 11:02

Я бы отключил учет хитов (количество просмотров материалов).
Ибо на каждый хит идет запись в базу, а запись - это очень дорогая операция.
sco_200x0.png а их у вас 100 000 в сутки
+ она не дает ничего сделать с таблицей (например чтение), пока запись не закончится.

administrator\components\com_zoo\tables\item.php
o5n_200x0.png

Если не нужно учитывать даты начала и публикации, то их тоже можно отключить
http://forum.jbzoo.c...y-jbzoo-dlya-r/

Можно (и нужно) попробовать самые большие таблицы перевести в InnoDB, чтобы не было проблем с блокировками при записи.
Или вообще все таблицы. Но сервер к этому должен быть готов, ибо квота есть общая на все таблицы InnoDB. Обычно 2Гб

Если аккуратно, то можно добавить return false сюда
media\zoo\applications\jbuniversal\framework\helpers\jbtables.php
gz6_200x0.png
НО(!) но ручная переиндексация из админки сломается. С другой стороны вы её там используете редко.
не уверен что отключение createTable даст большой производительности
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 SmetDenis

SmetDenis

Отправлено 21 October 2014 - 11:14

А каким образом контент добавляется на сайт?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 CB9TOIIIA

CB9TOIIIA

Отправлено 21 October 2014 - 11:17

Через админку редакторы.
 
Вот так с хитами?

	public function hit($object) {

	//denis
	
		return true;
		
		// get database
		$db  = $this->database;
		$key = $this->key;

		// increment hits
		if ($object->$key) {
			$query = "UPDATE ".$this->name
				." SET hits = (hits + 1)"
				." WHERE $key = ".(int) $object->$key;
			$db->query($query);
			$object->hits++;
			return true;
		}

		return false;
	}

или просто?

	public function hit($object) {

		return true;

	}

Сообщение отредактировал CB9TOIIIA: 21 October 2014 - 11:22

  • 0

#5 SmetDenis

SmetDenis

Отправлено 21 October 2014 - 11:26

Первый вариант позволит быстро откатится.
В остальном варианты эквивалентны.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 CB9TOIIIA

CB9TOIIIA

Отправлено 21 October 2014 - 11:44

Можете описать: Если вам не важны данные о начале и окончании публикации материала

 

Мне важен порядок на сайте и дата в материале, окончание публикации - никогда. Мне это не трогать?


  • 0

#7 SmetDenis

SmetDenis

Отправлено 21 October 2014 - 12:24

У материала есть разные даты
- дата создания
- последней модификации
- дата начала публикации
- дата окончания публикации

Последние 2 редко используются, но при больших объемах добавляют нагрузку
0ns_200x0.png
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 CB9TOIIIA

CB9TOIIIA

Отправлено 22 October 2014 - 05:25

Обновил ZOO и JBZOO :)

 

Изменить запрос необходимо для категории в самом Zoo и в JBZoo
 
1. Файл - administrator\components\com_zoo\tables\item.php . Метод getByCategory.

Изменился сам файл.

/*
		Function: getByCategory
			Method to retrieve all items of a category.

		Parameters:
			$category_id - Category id(s)

		Returns:
			Array - Array of items
	*/
	public function getByCategory($application_id, $category_id, $published = false, $user = null, $orderby = "", $offset = 0, $limit = 0, $ignore_order_priority = false) 

2. 2. Файл - media\zoo\applications\jbuniversal\framework\models\jbmodel.php . Метод _getItemSelect

 

Избавляемся от кода:

->where('tItem.' . $this->app->user->getDBAccessString())
->where('(tItem.publish_up = ' . $this->_dbNull . ' OR tItem.publish_up <= ' . $this->_dbNow . ')')
->where('(tItem.publish_down = ' . $this->_dbNull . ' OR tItem.publish_down >= ' . $this->_dbNow . ')')

А в файле: 

 $select = $this->_getSelect()
            ->select('tItem.*')
            ->from(ZOO_TABLE_ITEM . ' AS tItem')
            ->where('tItem.' . $this->app->user->getDBAccessString())
            ->where('tItem.state = ?', 1)
            ->where('(tItem.publish_up = ' . $this->_dbNull . ' OR tItem.publish_up <= ' . $this->_dbNow . ')')
            ->where('(tItem.publish_down = ' . $this->_dbNull . ' OR tItem.publish_down >= ' . $this->_dbNow . ')');

Как правильно поступить?)


  • 0

#9 SmetDenis

SmetDenis

Отправлено 22 October 2014 - 07:16

Приложите именно ваши файлы в сообщение, я изменю их отдам вам обратно.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 CB9TOIIIA

CB9TOIIIA

Отправлено 22 October 2014 - 07:49

Приложите именно ваши файлы в сообщение, я изменю их отдам вам обратно.

Прикрепленные файлы

  • Прикрепленный файл  jbzoo-edit.zip   35.87К   74 Количество загрузок:

  • 0




Click to return to top of page in style!