tcms начал вешать сервер

GangstaBros
Posts: 460
Joined: Sun Jan 05, 2014 4:34 pm

tcms начал вешать сервер

Post by GangstaBros »

LA 100

вот что админы написали:

В mysql очень много запросов висит на "Waiting for table metadata lock" - ожидают разблокировки таблиц. Разбираемся...

Пример долго выполняющегося запроса

SELECT gs.gallery_id, gs.thumb_id, gi.sponsor_id, gi.content_count, gi.content_type, gs.total_shows, gs.total_clicks, gs.total_ctr, gt.thumb_url, gd.*, gi.content_count, gi.crop_profile_id, gi.activation_date, gi.added_date, gi.duration, gi.url, gi.gallery_total_shows, gi.sponsor_id, gi.source_url, gi.custom_gallery FROM rot_gallery_stats15 as gs JOIN rot_gallery_data1 as gd on gd.gallery_id = gs.gallery_id JOIN rot_gallery_info as gi on gi.gallery_id = gs.gallery_id JOIN rot_thumbs as gt on gt.thumb_id = gs.thumb_id WHERE 1 = 1 AND gi.gallery_status = 'active' AND gi.gallery_type = 0 and gs.best_thumb = 'yes' and gs.group_id = 0 AND gs.gallery_id IN (SELECT rot_gal2tag.gallery_id FROM rot_gal2tag WHERE rot_gal2tag.tag_id IN ('36') ) AND gs.gallery_id NOT IN ('23457','23726','26802','32888','31558','45177','44628','16758','20591','19800','16139','21320','21446','21962','18028','16904','15362','19199','19740','23656','30397','23549','29533','23244') ORDER BY tested_thumb DESC, gs.total_ctr DESC LIMIT 0, 160# queryitems

"выполняться" они могут по 200..300 секунд.

Вот что выдаёт по ним explain:

+----+--------------+-------------+--------+--------------------------------------------------------------+------------+---------+------------------------------+-------+----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------+-------------+--------+--------------------------------------------------------------+------------+---------+------------------------------+-------+----------------------------------------------------+
| 1 | SIMPLE | | ALL | NULL | NULL | NULL | NULL | NULL | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | gd | eq_ref | PRIMARY | PRIMARY | 4 | .gallery_id | 1 | NULL |
| 1 | SIMPLE | gi | eq_ref | PRIMARY,sponsor_id,gallery_type,gallery_status | PRIMARY | 4 | .gallery_id | 1 | Using where |
| 1 | SIMPLE | gs | ref | unique_ids,best_thumb,gallery_id,thumb_id,tested_thumb_index | unique_ids | 7 | .gallery_id,const | 1 | Using where |
| 1 | SIMPLE | gt | ALL | PRIMARY | NULL | NULL | NULL | 28425 | Using where; Using join buffer (Block Nested Loop) |
| 2 | MATERIALIZED | rot_gal2tag | ref | tag_id,gallery_id | tag_id | 4 | const | 8090 | NULL |
+----+--------------+-------------+--------+--------------------------------------------------------------+------------+---------+------------------------------+-------+----------------------------------------------------+

т.е. в итоге обрабатывается не менее 28425 * 8090 = 229 958 250 записей.
GangstaBros
Posts: 460
Joined: Sun Jan 05, 2014 4:34 pm

Re: tcms начал вешать сервер

Post by GangstaBros »

что этот запрос делает и почему он такой долгий?
GangstaBros
Posts: 460
Joined: Sun Jan 05, 2014 4:34 pm

Re: tcms начал вешать сервер

Post by GangstaBros »

началось после какого-то из апдейтов - у нас кстати на всех tcms врубился галлери чекер зачем то . может в нем дело?

кодировку таблиц проверили - latin1 везде , раньше похожий баг был, когда слетали кодировки и юзались разные в пределах одной базы .
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: tcms начал вешать сервер

Post by admin »

Должно быть utf кодировка вообще у больших таблиц
в остальном скидывайте шел, разберемся какой именно запрос тормозит.
Don't forget to run script update
GangstaBros
Posts: 460
Joined: Sun Jan 05, 2014 4:34 pm

Re: tcms начал вешать сервер

Post by GangstaBros »

скинул
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: tcms начал вешать сервер

Post by admin »

Да, спасибо, подправили еще один запрос под сайты которые на базе тагов сделаны.
Но все равно это конечно не так быстро как категории.
Don't forget to run script update
GangstaBros
Posts: 460
Joined: Sun Jan 05, 2014 4:34 pm

Re: tcms начал вешать сервер

Post by GangstaBros »

admin wrote:Да, спасибо, подправили еще один запрос под сайты которые на базе тагов сделаны.
Но все равно это конечно не так быстро как категории.
а ты вот на мастере хинт выкладывал по этому поводу,
если на рабочем сайте так сделать - все ок будет? ничего там не развалицца , галеры рассортированы верно будут? цтр не последает никуда?
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: tcms начал вешать сервер

Post by admin »

не буду бросаться рекламными словами типа мы лучшие у нас ничего не падает и тп


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

но прямо такого что б я сделал сайт на тагах, раскрутил его и потом менял - нет, такого не тестировал.

в любом случае бекап, предварительно посмотреть на страницу с категориями вместо тагов и тп.
Don't forget to run script update
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: tcms начал вешать сервер

Post by admin »

Да, и я с ходу не нашел файл что б массово првоести ап, поэтому начать так же стоит с него
Don't forget to run script update
GangstaBros
Posts: 460
Joined: Sun Jan 05, 2014 4:34 pm

Re: tcms начал вешать сервер

Post by GangstaBros »

чета первый раз проблемы с обновлением:

25% (или 33%) downloaded NOTE !!! UPDATE IS NOT FINISHED !!!
Script can not open ../ for writing. Please, check permissions/file owner and run update again !!!

Права/владельцев/группы для файлов сайтов перезадавали, никакого эффекта.
Вот кусок из трассировки системных вызовов:

getcwd("/home/clients/ftp0/domains/dinain/html/scj/admin", 4096) = 62
open("/home/clients/ftp0/domains/domain/html/scj/", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EISDIR (Is a directory)
write(1, " NOTE !!! UPDA"..., 170 NOTE !!! UPDATE IS NOT FINISHED !!!
Script can not open ../ for writing. Please, check permissions/file owner and run update again !!!
) = 170

Такое впечатление, что производится попытка открыть каталог scj как файл.
Post Reply