
Alexey
14.08.2017
19:34:59
а, да. есть такая полезная утилита, называется perf

Fike
14.08.2017
19:35:00
просто perf

Alexey
14.08.2017
19:35:08
она из linux-tools пакета

Dmitriy
14.08.2017
19:35:25

Google

Alexey
14.08.2017
19:35:45
под рутом надо запускать

Dmitriy
14.08.2017
19:35:45
хотя я под рутом

Alexey
14.08.2017
19:37:00
первый раз такое вижу. но echo -1 > /proc/sys/kernel/perf_event_paranoid

Dmitriy
14.08.2017
19:37:38
Permission denied
[root@whm athlon]# echo -1 > /proc/sys/kernel/perf_event_paranoid
bash: /proc/sys/kernel/perf_event_paranoid: Permission denied

Alexey
14.08.2017
19:38:15
а, виртуальная машина

Dmitriy
14.08.2017
19:38:21
да
openvz
centos 6
2.6 ядро

Alexey
14.08.2017
19:38:39
ну хорошо, а вот так:
yum install gdb
curl -L https://www.percona.com/get/pt-pmp > /tmp/pt-pmp && chmod +x /tmp/pt-pmp
/tmp/pt-pmp —iterations=3

Dmitriy
14.08.2017
19:45:44
два минуса нужно

Google


Dmitriy
14.08.2017
19:46:11
и вывод - пипец)
одни ошибки
Если интересно:
Unhandled dwarf expression opcode 0xf3
Unhandled dwarf expression opcode 0xf3
Unhandled dwarf expression opcode 0xf3
Unhandled dwarf expression opcode 0xf3
Unhandled dwarf expression opcode 0xf3
вот таких партянка
И такого много
87 pthread_cond_wait,inline_mysql_cond_wait(mysql_thread.h:1165),inline_mysql_cond_wait(mysql_thread.h:1165),cache_thread(mysql_thread.h:1165),one_thread_per_connection_end(mysql_thread.h:1165),do_handle_one_connection(sql_connect.cc:1368),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
30 libaio::??(libaio.so.1),os_aio_linux_collect(os0file.cc:5388),os_aio_linux_handle(os0file.cc:5388),fil_aio_wait(fil0fil.cc:6503),io_handler_thread(srv0start.cc:586),start_thread(libpthread.so.0),clone(libc.so.6)
9 poll(libc.so.6),vio_io_wait(viosocket.c:992),vio_socket_io_wait(viosocket.c:108),vio_read(viosocket.c:184),my_real_read(net_serv.cc:875),my_net_read_packet(net_serv.cc:1138),do_command(sql_parse.cc:983),do_handle_one_connection(sql_connect.cc:1349),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
3 sigwait(libpthread.so.0),signal_hand(mysqld.cc:3401),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),srv_master_sleep(srv0srv.cc:3117),srv_master_thread(srv0srv.cc:3117),start_thread(libpthread.so.0),clone(libc.so.6)
Вот еще график интересный
селектов стало в разы больше


Alexey
14.08.2017
20:00:11
так может нагрузка возросла? mysqld по большей части ничего не делает, если это верхняя часть портянки, а не нижняя
вот это что выдаёт?
/tmp/pt-pmp --iterations=3 | head


Dmitriy
14.08.2017
20:02:44
[root@whm etc]# /tmp/pt-pmp —iterations=3 2>/dev/null | head
Mon Aug 14 23:02:09 MSK 2017
81 pthread_cond_wait,inline_mysql_cond_wait(mysql_thread.h:1165),inline_mysql_cond_wait(mysql_thread.h:1165),cache_thread(mysql_thread.h:1165),one_thread_per_connection_end(mysql_thread.h:1165),do_handle_one_connection(sql_connect.cc:1368),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
30 libaio::??(libaio.so.1),os_aio_linux_collect(os0file.cc:5388),os_aio_linux_handle(os0file.cc:5388),fil_aio_wait(fil0fil.cc:6503),io_handler_thread(srv0start.cc:586),start_thread(libpthread.so.0),clone(libc.so.6)
11 poll(libc.so.6),vio_io_wait(viosocket.c:992),vio_socket_io_wait(viosocket.c:108),vio_read(viosocket.c:184),my_real_read(net_serv.cc:875),my_net_read_packet(net_serv.cc:1138),do_command(sql_parse.cc:983),do_handle_one_connection(sql_connect.cc:1349),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
3 sigwait(libpthread.so.0),signal_hand(mysqld.cc:3401),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),srv_master_sleep(srv0srv.cc:3117),srv_master_thread(srv0srv.cc:3117),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),page_cleaner_sleep_if_needed(buf0flu.cc:2668),page_cleaner_sleep_if_needed(buf0flu.cc:2668),buf_flush_page_cleaner_thread(buf0flu.cc:2668),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),page_cleaner_sleep_if_needed(buf0flu.cc:2668),page_cleaner_sleep_if_needed(buf0flu.cc:2668),buf_flush_lru_manager_thread(buf0flu.cc:2668),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),btr_defragment_thread(btr0defragment.cc:758),start_thread(libpthread.so.0),clone(libc.so.6)
3 pthread_cond_wait,os_cond_wait(os0sync.cc:196),os_event_wait_low(os0sync.cc:196),srv_resume_thread(srv0srv.cc:1088),srv_purge_coordinator_suspend(srv0srv.cc:1088),srv_purge_coordinator_thread(srv0srv.cc:1088),start_thread(libpthread.so.0),clone(libc.so.6)
[root@whm etc]# /tmp/pt-pmp —iterations=3 2>/dev/null | head
Mon Aug 14 23:02:26 MSK 2017
81 pthread_cond_wait,inline_mysql_cond_wait(mysql_thread.h:1165),inline_mysql_cond_wait(mysql_thread.h:1165),cache_thread(mysql_thread.h:1165),one_thread_per_connection_end(mysql_thread.h:1165),do_handle_one_connection(sql_connect.cc:1368),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
30 libaio::??(libaio.so.1),os_aio_linux_collect(os0file.cc:5388),os_aio_linux_handle(os0file.cc:5388),fil_aio_wait(fil0fil.cc:6503),io_handler_thread(srv0start.cc:586),start_thread(libpthread.so.0),clone(libc.so.6)
11 poll(libc.so.6),vio_io_wait(viosocket.c:992),vio_socket_io_wait(viosocket.c:108),vio_read(viosocket.c:184),my_real_read(net_serv.cc:875),my_net_read_packet(net_serv.cc:1138),do_command(sql_parse.cc:983),do_handle_one_connection(sql_connect.cc:1349),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
3 sigwait(libpthread.so.0),signal_hand(mysqld.cc:3401),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),srv_master_sleep(srv0srv.cc:3117),srv_master_thread(srv0srv.cc:3117),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),page_cleaner_sleep_if_needed(buf0flu.cc:2668),page_cleaner_sleep_if_needed(buf0flu.cc:2668),buf_flush_page_cleaner_thread(buf0flu.cc:2668),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),page_cleaner_sleep_if_needed(buf0flu.cc:2668),page_cleaner_sleep_if_needed(buf0flu.cc:2668),buf_flush_lru_manager_thread(buf0flu.cc:2668),start_thread(libpthread.so.0),clone(libc.so.6)
3 select(libc.so.6),os_thread_sleep(os0thread.cc:307),btr_defragment_thread(btr0defragment.cc:758),start_thread(libpthread.so.0),clone(libc.so.6)
3 pthread_cond_wait,os_cond_wait(os0sync.cc:196),os_event_wait_low(os0sync.cc:196),srv_resume_thread(srv0srv.cc:1088),srv_purge_coordinator_suspend(srv0srv.cc:1088),srv_purge_coordinator_thread(srv0srv.cc:1088),start_thread(libpthread.so.0),clone(libc.so.6)


Alexey
14.08.2017
20:07:15
этот mysqld вообще ничем не занят
а он там точно один? что pidof mysqld показывает?

Dmitriy
14.08.2017
20:12:57
# pidof mysqld
30553

Alexey
14.08.2017
20:17:50
а если —iterations=10 поставить?


Dmitriy
14.08.2017
20:24:52
# /tmp/pt-pmp —iterations=10 2>/dev/null | head
Mon Aug 14 23:24:07 MSK 2017
282 pthread_cond_wait,inline_mysql_cond_wait(mysql_thread.h:1165),inline_mysql_cond_wait(mysql_thread.h:1165),cache_thread(mysql_thread.h:1165),one_thread_per_connection_end(mysql_thread.h:1165),do_handle_one_connection(sql_connect.cc:1368),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
100 libaio::??(libaio.so.1),os_aio_linux_collect(os0file.cc:5388),os_aio_linux_handle(os0file.cc:5388),fil_aio_wait(fil0fil.cc:6503),io_handler_thread(srv0start.cc:586),start_thread(libpthread.so.0),clone(libc.so.6)
26 poll(libc.so.6),vio_io_wait(viosocket.c:992),vio_socket_io_wait(viosocket.c:108),vio_read(viosocket.c:184),my_real_read(net_serv.cc:875),my_net_read_packet(net_serv.cc:1138),do_command(sql_parse.cc:983),do_handle_one_connection(sql_connect.cc:1349),handle_one_connection(sql_connect.cc:1261),start_thread(libpthread.so.0),clone(libc.so.6)
10 sigwait(libpthread.so.0),signal_hand(mysqld.cc:3401),start_thread(libpthread.so.0),clone(libc.so.6)
10 select(libc.so.6),os_thread_sleep(os0thread.cc:307),srv_master_sleep(srv0srv.cc:3117),srv_master_thread(srv0srv.cc:3117),start_thread(libpthread.so.0),clone(libc.so.6)
10 select(libc.so.6),os_thread_sleep(os0thread.cc:307),page_cleaner_sleep_if_needed(buf0flu.cc:2668),page_cleaner_sleep_if_needed(buf0flu.cc:2668),buf_flush_page_cleaner_thread(buf0flu.cc:2668),start_thread(libpthread.so.0),clone(libc.so.6)
10 select(libc.so.6),os_thread_sleep(os0thread.cc:307),btr_defragment_thread(btr0defragment.cc:758),start_thread(libpthread.so.0),clone(libc.so.6)
10 pthread_cond_wait,os_cond_wait(os0sync.cc:196),os_event_wait_low(os0sync.cc:196),srv_resume_thread(srv0srv.cc:1088),srv_purge_coordinator_suspend(srv0srv.cc:1088),srv_purge_coordinator_thread(srv0srv.cc:1088),start_thread(libpthread.so.0),clone(libc.so.6)
10 pthread_cond_wait,os_cond_wait(os0sync.cc:196),os_event_wait_low(os0sync.cc:196),buf_dump_thread(buf0dump.cc:701),start_thread(libpthread.so.0),clone(libc.so.6)


Alexey
14.08.2017
20:35:15
да что-то мистика какая-то. mysqld не занят ничем абсолютно. вангую какие-то причуды openvz

Google

Alexey
14.08.2017
20:35:48
а в show processlist что-нибудь есть?

Dmitriy
14.08.2017
20:37:18
там все по старому
есть там запромы, которые тупят, но не на столько же они тачку нагрузили
тем более что на 5.6 все было норм

Alexey
14.08.2017
20:42:47
но если верить графикам, 5.6 и запросов меньше обрабатывал. собственно, нагрузка cpu возросла пропорционально нагрузке на сервер, и я бы в эту сторону смотрел

Dmitriy
14.08.2017
20:47:31
возможно ли разная интерпритация вложенных запросов?
там есть запросы с несколькими вложенными запросами
по производительности, кстати стало даже хуже
Алексей, спасибо, буду изучать вопрос с этой стороны
Вариант очень интересный

lost
14.08.2017
21:46:56
https://mariadb.com/kb/en/mariadb/derived-table-merge-optimization/
сюда копай
при переходе с 5.6 на 5.7 столкнулись с похожей проблемой, потому что этот хинт отпимизатора по умолчанию включен

Dmitriy
15.08.2017
05:14:49

lost
15.08.2017
06:02:02
Да, там приводится как это сделать

Ivan
15.08.2017
12:34:39
Вы мне вот скажите, я могу менять wsrep_sst_method = xtrabackup -> rsync после того, как нода синкнулась?

Dmitriy
15.08.2017
12:35:26
mysql 8 уже использовали в продакшене ? вот думаю стоит ли преходить на 8 с 5.7

Alexey
15.08.2017
12:46:19

Ivan
15.08.2017
12:46:45
да
и для IST не нужны никакие state файлы от SST?
они я так понимаю разные для разных методов

Google

Alexey
15.08.2017
12:47:28
нет, IST и SST — совершенно разные, никак не пересекающиеся по данным процедуры

Ivan
15.08.2017
12:47:48
ок, спасибо

Alexey
15.08.2017
12:47:50
SST делается внешними утилитами. IST самой галерой с использованием gcache

Dmitriy
15.08.2017
12:49:58
Да мне бы понять падает она или нет. На личном проекте хочу попробывать. упать на час там не критично. надо обновиться на этой недели. Оконные ф-ции стали нужны

Alexey
15.08.2017
12:51:37
по личным, субъективным ощущениям, каждый релиз после 5.0 получается стабильнее предыдущего. 5.0 был полным кошмаром (но там долгая история). 5.1 просто кошмаром, 5.5 уже похож на релиз, 5.6 и особенно 5.7 — очень ok. судя по всему, 8.0 продолжит тренд

Аггей
15.08.2017
13:03:15
Станет кошмаром?

Dmitriy
15.08.2017
13:04:10

Ivan
15.08.2017
13:37:17
А что, mariadb не комильфо, у всех mysql?

Alexey
15.08.2017
14:55:28
ну, не у всех конечно. но думаю, у большинства mysql/percona

Nikolay
15.08.2017
15:52:23
https://www.youtube.com/watch?v=eDh9x5PuhxQ
https://www.youtube.com/watch?v=Y86Vz00XIOs
Moscow MySQL User Group Meetup 11 июля

Maxim
16.08.2017
08:28:06
Как сделать запрос в две таблицы, где колонки с одинаковыми именами и вывести в одну колонку результат?
UNION заюзал

Magic
16.08.2017
09:38:09
Беру средние значения по первым опросам, точно так же по последним. Условно говоря нужны по вторым, по третьим и тд..
мой запрос на выборку среднего значения по одному столбцу по первым опросам -
SELECT (AVG(energy)) as 'value', 'Энергия' as metric, UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY) as time_sec FROM first_survey t1 INNER JOIN ( SELECT MIN(time) maxdate, user_id FROM first_survey GROUP BY user_id ) t2 ON t1.user_id = t2.user_id AND t1.time = t2.maxdate
точно так же делаю по последним, только меняю MIN на MAX
а вот можно ли по вторым и по третьим посчитать - я хз как

lost
16.08.2017
12:18:50
добавь колонку с порядковым номером теста для каждого юзера, например

Google

lost
16.08.2017
12:19:03
и потом считай среднее с группировкой по порядковому номеру

Ivan
16.08.2017
12:57:56
Кто знает, как добраться до переменных из раздела [sst] из рантайма и можно ли их менять вообще?

Alexey
16.08.2017
13:06:54
из рантайма, в смысле из сервера? никак, потому что сервер секцию [sst] вообще не читает и ничего про неё не знает. это для внешних утилит, которые читают секцию при запуске

Ivan
16.08.2017
13:14:01
то есть если я на доноре изменю эту секцию перед подключением receiver, то с большой долей вероятности новые настройки подхватятся во время подключения?

Magic
16.08.2017
13:15:53

Alexey
16.08.2017
13:16:22

Ivan
16.08.2017
13:16:36
Это надо потестить, интересно
спасибо!

lost
16.08.2017
13:23:54

Magic
16.08.2017
13:33:22

lost
16.08.2017
13:49:05
задача: определить средние показатели в разрезе всех юзеров для каждого теста:
для 1 теста для 2 теста и так далее
вопрос: как определелить какой тест у каждого юзера 1 какой 2 и так далее

Magic
16.08.2017
13:50:30

lost
16.08.2017
13:51:56
ну так не все потеряно
чуть-чуть изменить структуру таблицы, пробежаться в цикле по юзерам, обновить порядок и написать 1 запрос без костылей

Magic
16.08.2017
13:53:45

lost
16.08.2017
13:54:04
сессионными переменными

Magic
16.08.2017
13:54:24
так и гуглить?

lost
16.08.2017
13:54:48
так и гуглить

Magic
16.08.2017
13:54:57
Спасибо, поищу

Arslanali
17.08.2017
07:18:03
Привет.
Такой вопрос ребята.
Хотел бы аучиться делать такой поиск по базе(PHP + MySQL)
В обном поле БД фамилия абонента - "Соловьев Михаил Дмитриевич".
Делаю стандартный поиск like
select * from users where name like %$user%;
Поиск выдает Михаила когда ищу так: "Михаил" или "Соловьев",
но не отрабатывает когда напишу "Михаил Соловьев".
Как-то разбить по пробелам или какой-то есть другой способ реализовать такой поиск?
или как называется такой поиск, чтобы погуглить его примеры?