Views съел все ресурсы

17 октября 2014 в 22:15
Аватар пользователя shved shved 0 49

Есть сайт сообщества автомобилистов.Сделал блок на главной с выводом последних событий на форуме, сначала вроде все было хорошо, но со временем количество тем и комментариев к ним увеличилось и хотя все равно их сравнительно не очень много, но блок очень сильно стал тормозить загрузку страницы. Кэширование решает проблему, но тогда теряется основной смысл этого блока, обновления происходят редко и не видно есть новые обсуждения или нет.В представлении много чего выводится, но вроде как все нужное. Я думаю,если сейчас такие проблемы с производительностью, то что будет если сайт например вырастет и вырастет посещаемость.
Подскажите может я неправильно организовал выход блока или совсем надо, подобные вещи как то по другому выводить?
Скриншот выводимого блока прикрепляю.

Комментарии

Я понимаю, что запросов много, но к примеру сайт на ucoz, который у меня раньше был, при таком же выводе информации на бесплатном хостинге, не тормозил подобным образом, у других людей на сайтах я так же видел подобные блоки с выводом последних обновлений, так же нормально было при загрузке, жаль, что друпал не позволяет выводить так как я хочу. Теперь думаю если этот блок убрать, то как можно реализовать, что то подобное, но при меньших затратах ресурсов?
Как думаете, возможно сделать без помощи Views, что бы не тормозил сайт или друпал все равно будет долго обрабатывать подобное количество запросов?

17 октября 2014 в 22:42

"RxB" wrote:
не слушайте хулигана

От него я уже получал дельные советы, поэтому не доверять нет оснований.
"RxB" wrote:
Фигня ваш блок

Может у вас какое то свое видение ситуации, что проблема в хостинге или еще в чем то?

17 октября 2014 в 23:39

"shved" wrote:

Может у вас какое то свое видение ситуации, что проблема в хостинге или еще в чем то?


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

18 октября 2014 в 0:08

"RxB" wrote:
Мне слабо верится, что список 10 последних комментов, пусть и с джойнами может поглощать все ресурсы

Там скорее всего с mysql-server проблемы.

18 октября 2014 в 0:14

я так понимаю, что это этот форум http://friends-motors.com/
только я так понимаю, что там проблема не только с этим блоком, страницы из кеша отдаются нормально, а некешированные очень медленно, к примеру вот такая страничка http://friends-motors.com/forums/%D0%BF%D0%BE%D0%B4%D0%B2%D0%B5%D1%81%D0... до попадания в кеш грузилась больше 6 секунд

18 октября 2014 в 0:26

"drupby" wrote:
только я так понимаю, что там проблема не только с этим блоком, страницы из кеша отдаются нормально, а некешированные очень медленно, к примеру вот такая страничка http://friends-motors.com/forums/%D0%BF%D0%BE%D0%B4%D0%B2%D0%B5%D1%81%D0... до попадания в кеш грузилась больше 6 секунд

Ссылка почему то не корректно вставилась.
Если тупит сервер, то выходит это проблема с хостером? Дело в том, что хостинг вроде бы не плохой, на нашем форуме много про него хорошего пишут. Я к ним обращался с вопросом о том, что может более дорогой тариф необходимо выбрать, но мне ответили, что не поможет, проблема с самим выводом, очень он сложный.

18 октября 2014 в 0:33

"ХулиGUN" wrote:
может и сам сервак тупит

ну он я так понял на патруле
тут надо обращаться к специалисту по advanced forum - RxB

18 октября 2014 в 0:34

"drupby" wrote:

тут надо обращаться к специалисту по advanced forum - RxB

Спасибо за рекламу, но с семёрочным форумом у меня опыта поменьше пока, хотя подходы для оптимизации там примерно такие же

18 октября 2014 в 0:50

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

18 октября 2014 в 1:03

Блоки с вьюхами всегда меня добивали. Страница без блока грузится нормально, если вставить любую вьюху, хоть с последними коментами, хоть с популярными нодами... и не важно какое количество выводить. Тормозить будет!!! И форум тут вообще ни причем. Единственный способ, который я нашел для себя оптимальным, это в самой вьюхе настроить кеширование (хоть самое минимальное).

18 октября 2014 в 1:07

"Arturus" wrote:
Если на Патруле, то дело не в хостинге. Может имеет смысл выгружать только заголовки новых сообщений без дат и авторов? Запрос будет работать очень быстро и новых сообщений поместится больше.

Думаю, что придется уменьшать данные в выводе, хотя хотелось бы оставить так как есть, еще есть надежда на https://www.drupal.org/project/ajaxblocks
ну а дальше только на RxB

18 октября 2014 в 1:09

Ребята, вроде вот этот модуль неплохая вещь https://www.drupal.org/project/ajaxblocks понятно, что не панацея иначе бы все его использовали. Подскажите какие минусы у блока в чем могут возникнуть проблемы?

18 октября 2014 в 15:34

"ХулиGUN" wrote:
Он будет использовать всё те же запросы

Спасибо за ответ.
Тогда в чем же его плюсы?

18 октября 2014 в 16:27

А если поставить в самом представлении
Блок: Использовать AJAX для загрузки, если доступно
Может дать положительный результат?

10 ноября 2015 в 11:49

"RxB" wrote:
Вам причину надо лечить, а не следствие

Причина я так понимаю, в том, что Views создает тяжелые запросы, вылечить можно путем уменьшения вывода данных или кэшированием блока.Возможно помогла бы оптимизация блока.
И все таки аякс в представлении мог бы уменьшить время загрузки блока?

19 октября 2014 в 15:31

"shved" wrote:
Вроде бы я ссылку не оставлял.

Пффф, я вот тоже автотематикой интересуюсь профессионально, и без труда нашел Ваш сайт.

Тоже бы посмотрел запросы Девела.

19 октября 2014 в 23:29

А пока думаю, что проблема в том, что на сайте целая куча модулей, а разделов форумов просто тьма.Причем не поверите, все в ручную добавлял.

20 октября 2014 в 0:17

Как говорят психологи - проблем не существует, они все надуманы-))

А действительно ли пользователям Вашего сайта нужна ВСЯ информация, выводимая в этом блоке.

А действиельно ли пользователям Вашего сайта нужен этот блок?

Если информация всетаки нужна, насколько критичен размер периода ее обновления?

Если понимаете, для чего пользователям нужен этот блок, может можно решить его задачи как-то подругому и даже лучше?

20 октября 2014 в 8:12

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

22 октября 2014 в 8:34

1 вариант, попробовать написать такой запрос ручками (снипет), возможно у Вас получится лучше. Или переходить на тариф с неограниченнымт ресурсами процессора.

22 октября 2014 в 8:48

Так было, 15.5 секунд на запрос.

mysql> EXPLAIN SELECT node.nid AS nid, taxonomy_term_data_taxonomy_term_hierarchy.name AS taxonomy_term_data_taxonomy_term_hierarchy_name, taxonomy_term_data_taxonomy_term_hierarchy.vid AS taxonomy_term_data_taxonomy_term_hierarchy_vid, taxonomy_term_data_taxonomy_term_hierarchy.tid AS taxonomy_term_data_taxonomy_term_hierarchy_tid, taxonomy_term_data_taxonomy_term_hierarchy__taxonomy_vocabulary.machine_name AS taxonomy_term_data_taxonomy_term_hierarchy__taxonomy_vocabul, taxonomy_term_data_node.name AS taxonomy_term_data_node_name, taxonomy_term_data_node.vid AS taxonomy_term_data_node_vid, taxonomy_term_data_node.tid AS taxonomy_term_data_node_tid, taxonomy_term_data_node__taxonomy_vocabulary.machine_name AS taxonomy_term_data_node__taxonomy_vocabulary_machine_name, users_node.name AS users_node_name, users_node.uid AS users_node_uid, node.title AS node_title, node.type AS node_type, node_comment_statistics.comment_count AS node_comment_statistics_comment_count, ncs_users.name AS ncs_users_name, node_comment_statistics.last_comment_uid AS node_comment_statistics_last_comment_uid, comment_node_comment_statistics.created AS comment_node_comment_statistics_created, 'node' AS field_data_body_node_entity_type, COALESCE(ncs_users.name, node_comment_statistics.last_comment_name) AS node_comment_statistics_last_comment_name, GREATEST(node.changed, node_comment_statistics.last_comment_timestamp) AS node_comment_statistics_last_updated FROM  node node LEFT JOIN users users_node ON node.uid = users_node.uid LEFT JOIN (SELECT td.*, tn.nid AS nid FROM  taxonomy_term_data td LEFT JOIN taxonomy_vocabulary tv ON td.vid = tv.vid LEFT JOIN taxonomy_index tn ON tn.tid = td.tid WHERE  (tv.machine_name IN  ('forums')) ) taxonomy_term_data_node ON node.nid = taxonomy_term_data_node.nid LEFT JOIN taxonomy_term_hierarchy taxonomy_term_data_node__taxonomy_term_hierarchy ON taxonomy_term_data_node.tid = taxonomy_term_data_node__taxonomy_term_hierarchy.tid LEFT JOIN taxonomy_term_data taxonomy_term_data_taxonomy_term_hierarchy ON taxonomy_term_data_node__taxonomy_term_hierarchy.parent = taxonomy_term_data_taxonomy_term_hierarchy.tid INNER JOIN node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid LEFT JOIN comment comment_node_comment_statistics ON node_comment_statistics.cid = comment_node_comment_statistics.cid LEFT JOIN taxonomy_vocabulary taxonomy_term_data_taxonomy_term_hierarchy__taxonomy_vocabulary ON taxonomy_term_data_taxonomy_term_hierarchy.vid = taxonomy_term_data_taxonomy_term_hierarchy__taxonomy_vocabulary.vid LEFT JOIN taxonomy_vocabulary taxonomy_term_data_node__taxonomy_vocabulary ON taxonomy_term_data_node.vid = taxonomy_term_data_node__taxonomy_vocabulary.vid LEFT JOIN users ncs_users ON node_comment_statistics.last_comment_uid = ncs_users.uid AND ncs_users.uid != '0' WHERE (( (node.status = '1') AND (node.type IN  ('forum')) )) ORDER BY node_comment_statistics_last_updated DESC LIMIT 6 OFFSET 0;;
+----+-------------+-----------------------------------------------------------------+--------+------------------------------------+------------------+---------+--------------------------------------------------------------------+-------+----------------------------------------------+
| id | select_type | TABLE                                                           | TYPE   | possible_keys                      | KEY              | key_len | REF                                                                | ROWS  | Extra                                        |
+----+-------------+-----------------------------------------------------------------+--------+------------------------------------+------------------+---------+--------------------------------------------------------------------+-------+----------------------------------------------+
|  1 | PRIMARY     | node                                                            | REF    | PRIMARY,node_status_type,node_type | node_status_type | 102     | const,const                                                        |   974 | USING WHERE; USING TEMPORARY; USING filesort |
|  1 | PRIMARY     | users_node                                                      | eq_ref | PRIMARY                            | PRIMARY          | 4       | u9163_main.node.uid                                                |     1 |                                              |
|  1 | PRIMARY     | node_comment_statistics                                         | eq_ref | PRIMARY                            | PRIMARY          | 4       | u9163_main.node.nid                                                |     1 |                                              |
|  1 | PRIMARY     | comment_node_comment_statistics                                 | eq_ref | PRIMARY                            | PRIMARY          | 4       | u9163_main.node_comment_statistics.cid                             |     1 |                                              |
|  1 | PRIMARY     | <derived2>                                                      | ALL    | NULL                               | NULL             | NULL    | NULL                                                               | 10837 |                                              |
|  1 | PRIMARY     | taxonomy_term_data_node__taxonomy_term_hierarchy                | REF    | PRIMARY                            | PRIMARY          | 4       | taxonomy_term_data_node.tid                                        |     1 | USING INDEX                                  |
|  1 | PRIMARY     | taxonomy_term_data_taxonomy_term_hierarchy                      | eq_ref | PRIMARY                            | PRIMARY          | 4       | u9163_main.taxonomy_term_data_node__taxonomy_term_hierarchy.parent |     1 |                                              |
|  1 | PRIMARY     | taxonomy_term_data_taxonomy_term_hierarchy__taxonomy_vocabulary | eq_ref | PRIMARY                            | PRIMARY          | 4       | u9163_main.taxonomy_term_data_taxonomy_term_hierarchy.vid          |     1 |                                              |
|  1 | PRIMARY     | taxonomy_term_data_node__taxonomy_vocabulary                    | eq_ref | PRIMARY                            | PRIMARY          | 4       | taxonomy_term_data_node.vid                                        |     1 |                                              |
|  1 | PRIMARY     | ncs_users                                                       | eq_ref | PRIMARY                            | PRIMARY          | 4       | u9163_main.node_comment_statistics.last_comment_uid                |     1 |                                              |
|  2 | DERIVED     | tv                                                              | const  | PRIMARY,machine_name               | machine_name     | 767     |                                                                    |     1 | USING INDEX                                  |
|  2 | DERIVED     | td                                                              | REF    | taxonomy_tree,vid_name             | taxonomy_tree    | 4       | const                                                              |  4998 |                                              |
|  2 | DERIVED     | tn                                                              | REF    | term_node                          | term_node        | 4       | u9163_main.td.tid                                                  |     4 |                                              |
+----+-------------+-----------------------------------------------------------------+--------+------------------------------------+------------------+---------+--------------------------------------------------------------------+-------+----------------------------------------------+
13 ROWS IN SET (0.07 sec)
23 октября 2014 в 12:28

"RxB" wrote:
Семёрочный вьюс наше всё.
Подождём, что автор скажет.
Никто из теоретиков не угадал, кстати.

Виктор (RxB) просто творит чудеса. Views с тем же количеством информации теперь работает очень хорошо. Я так понимаю, что с моей стороны была не правильно построена структура вывода этой вьюхи.

23 октября 2014 в 20:13

"shved" wrote:
Виктор (RxB) просто творит чудеса.

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

23 октября 2014 в 20:21

"drupby" wrote:
Я так думаю, что чудеса там были сотворены первоначально как раз таки.

Так оно и есть, похоже чудеса я начал сотворять еще при установке друпала, не говоря уже про структуру и все прочее.

23 октября 2014 в 20:49