2016-06-13 4 views
0

Так что этот меня озадачивает. 2 дня назад почти все запросы на нашем сервере стали медленными. Журнал медленных запросов практически изменяется каждый раз, когда страница обслуживается.Почти все запросы стали медленными

Что меня озадачивает, так это то, что у нас нет особо большой таблицы, только 15 000 или около того записей, а индексы (насколько мне известно) не являются проблемой. Также выполнение тех же запросов в PHPMYADMIN выполняется практически в нулевое время.

Пользователи таблицы имеют идентификаторы, имя, страну, идентификатор, crmstatus, modified_time, last_comment и звонки.

Сервер имеет 8 ядер и 16 ГБ оперативной памяти.

Вот наш my.cnf:

[mysqld] 
skip-name-resolve 
innodb_file_per_table=1 
innodb_buffer_pool_size=134217728 
max_allowed_packet=268435456 
open_files_limit = 1024000 
query_cache_type = 1 
innodb_buffer_pool_instances = 3 
slow-query-log = 1 
long_query_time = 0.5 
query_cache_size=1G 
join_buffer_size=16M 
tmp_table_size=512M 
max_heap_table_size=1G 
thread_cache_size=8 
table_open_cache=4096 
innodb_buffer_pool_size=3G 
key_buffer_size=256M 
query_cache_limit=512M 
tmp_table_size=512M 
slow-query-log = 1 
slow-query-log-file = /var/log/mysql/mysql-slow.log 
log_error = /var/log/mysqlerror.log 
default-storage-engine=MyISAM 
bind-address   = 127.0.0.1 

И вот последние несколько медленных запросов, которые на самом деле не должно быть.

# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 1.352077 Lock_time: 0.000062 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820458; 
update `users` set `modified_time` = '2016-06-13 12:20:57', `last_comment` = '2016-06-13 12:20:57' where `id` = '50045170'; 
# Time: 160613 14:21:28 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 1.613013 Lock_time: 0.000041 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820488; 
update users set calls = calls+1, modified_time="2016-06-13 12:21:26" where id = '50045127'; 
# Time: 160613 14:21:47 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 9.126265 Lock_time: 0.000055 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820507; 
update `users` set `modified_time` = '2016-06-13 12:21:38', `last_comment` = '2016-06-13 12:21:38' where `id` = '50037097'; 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 9.051441 Lock_time: 0.000053 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820507; 
update users set calls = calls+1, modified_time="2016-06-13 12:21:38" where id = '50045104'; 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 6.198130 Lock_time: 0.000042 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820507; 
update `users` set `modified_time` = '2016-06-13 12:21:41', `last_comment` = '2016-06-13 12:21:41' where `id` = '50015310'; 
# Time: 160613 14:22:03 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 1.770877 Lock_time: 0.000074 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820523; 
update users set calls = calls+1, modified_time="2016-06-13 12:22:01" where id = '50045235'; 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 0.564553 Lock_time: 0.000043 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820523; 
update users set calls = calls+1, modified_time="2016-06-13 12:22:02" where id = '50045126'; 
# Time: 160613 14:22:29 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 11.289152 Lock_time: 0.000064 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820549; 
update users set calls = calls+1, modified_time="2016-06-13 12:22:18" where id = '50045232'; 
# [email protected]: REMOVED[REMOVED] @ localhost [] 
# Query_time: 11.016395 Lock_time: 0.000085 Rows_sent: 0 Rows_examined: 1 
SET timestamp=1465820549; 
update `users` set `crmstatus` = 'Decline', `modified_time` = '2016-06-13 12:22:18' where `id` = '50045055'; 
+1

Это имеет значение, если вы НЕ ссылаетесь на идентификаторы в виде строки, то есть используете где id = 50045232 вместо id = '50045232' - возможно, что это может занять больше времени, чем нужно, потому что оно сравнивает строки, числа (проверьте, что поле ID тоже INT не VARCHAR) –

+0

Я не пишу SQL напрямую, а использую встроенные функции Laravel 4. Вот как запрос выглядит код-накрест: DB :: таблица ('пользователи') \t \t \t \t -> где ('ID', $ _POST [ 'идентификатор пользователя']) \t \t \t \t -> обновление (array ('crmstatus' => $ _POST ['crmstatus'], 'modified_time' => date ('Ymd G: i: s'))); – PHPWhisperer

+1

Большинство ваших запросов выглядят как ...... где 'id' = '50045055'; Используете ли вы строку (текст) в качестве первичного ключа? –

ответ

0

Ouch!

innodb_buffer_pool_size=134217728 -- (should remove) 
innodb_buffer_pool_size=3G 
query_cache_type = 1 -- usually a waste on production servers 
query_cache_size=1G  -- TERRIBLE! Don't go over about 50M 
tmp_table_size=512M  -- Dangerously high - suggest 100M 
max_heap_table_size=1G -- Dangerously high - suggest 100M 
key_buffer_size=256M 
tmp_table_size=512M -- redundant 
log_error = /var/log/mysqlerror.log -- typo? 
default-storage-engine=MyISAM -- InnoDB is preferred 

Просьба SHOW CREATE TABLE users - нужно видеть двигатель и индекс (ы).

Какую версию MySQL вы используете?

+0

Можете ли вы предоставить нам ссылку, в которой эти значения * объясняются *, как вы это делали. Обычно оптимизатор * наивный * предположил бы, что больше оперативной памяти - это лучшая производительность ... –

+0

[Распределение памяти] (http://mysql.rjweb.org/doc.php/memory); и [Различные советы] (http://mysql.rjweb.org/doc.php/ricksrots). Больше - не всегда лучше. –

Смежные вопросы