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

Главные вкладки

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

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

Комментарии

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

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

Аватар пользователя shved shved 17 октября 2014 в 23:39

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

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

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

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 18 октября 2014 в 0:08

"shved" wrote:

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


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

Аватар пользователя vitaboss vitaboss 18 октября 2014 в 0:14

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

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

Аватар пользователя drupby drupby 18 октября 2014 в 0:26

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

Аватар пользователя shved shved 18 октября 2014 в 0:33

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

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

Аватар пользователя drupby drupby 18 октября 2014 в 0:34

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

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

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 18 октября 2014 в 0:50

"drupby" wrote:

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

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

Аватар пользователя Arturus Arturus 18 октября 2014 в 1:03

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

Аватар пользователя vitaboss vitaboss 18 октября 2014 в 1:07

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

Аватар пользователя shved shved 18 октября 2014 в 1:09

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

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

Аватар пользователя shved shved 18 октября 2014 в 15:34

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

Аватар пользователя shved shved 10 ноября 2015 в 11:49

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

Аватар пользователя shved shved 19 октября 2014 в 15:31

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

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

Аватар пользователя Айдар Айдар 19 октября 2014 в 23:29

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

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

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

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

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

Аватар пользователя Orion76 Orion76 20 октября 2014 в 8:12

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

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

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

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

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

Аватар пользователя shved shved 22 октября 2014 в 8:34

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

Аватар пользователя Arturus Arturus 22 октября 2014 в 8:48

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

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 23 октября 2014 в 12:28

Так было, 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)
Аватар пользователя shved shved 23 октября 2014 в 20:13

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

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

Аватар пользователя drupby drupby 23 октября 2014 в 20:21

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

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

Аватар пользователя shved shved 23 октября 2014 в 20:49

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

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