SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.09.2012 19:05:33

SSD
Участник
Зарегистрирован: 20.09.2012
Сообщений: 10

Mysql грузит процессор - но подключений практически нету

Всем привет.

Помогите пжл разобраться - не понятно почему mysqld грузит процессор  40-80%.При 7 подключении к примеру.
Сервер:Quad Xeon 2.13Ghz
RAM:2Gb (половина свободна)
Крутится сайт на Nginx в связки php-fpm
Вот вывод mytop:
Queries: 1.5M   qps:  357 Slow:   465.0         Se/In/Up/De(%):    87/01/00/01
             qps now:  264 Slow qps: 0.0  Threads:    3 (   1/  63) 83/01/01/01
Cache Hits: 1.1M  Hits/s: 252.4 Hits now: 202.3  Ratio: 81.8% Ratio now: 92.8%
Key Efficiency: 93.8%  Bps in/out: 39.7k/ 2.4M   Now in/out: 44.3k/783.4k

      Id      User         Host/IP         DB      Time    Cmd Query or State
      --      ----         -------         --      ----    --- ----------
   28589      root       localhost    site         0  Query show full processlist
    4390      root       localhost                   18  Sleep
     169      root       localhost                 3841  Sleep

При этом  mysql      82  20    0  2577M   514M uwait   3  57:47 52.05% mysqld


Может я где то что то не так настроил?
Или как можно выяснить из-за чего?Из кривого сайта или настроек mysql..

Неактивен

 

#2 20.09.2012 19:20:57

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Mysql грузит процессор - но подключений практически нету

mytop вам пишет, что 300 запросов в секунду, но почему-то не показывает сами запросы. Попробуйте SHOW FULL PROCESSLIST несколько раз, подключившись к mysql под рутом.

Неактивен

 

#3 20.09.2012 20:32:07

SSD
Участник
Зарегистрирован: 20.09.2012
Сообщений: 10

Re: Mysql грузит процессор - но подключений практически нету

rgbeast написал:

mytop вам пишет, что 300 запросов в секунду, но почему-то не показывает сами запросы. Попробуйте SHOW FULL PROCESSLIST несколько раз, подключившись к mysql под рутом.

В предыдущем примере тоже было все под рутом.(а может mytop не показывать запросы - так как они закешированы? query_cache_size=256M - 56мб занято)

Вот с SHOW FULL PROCESSLIST

пару команд

mysql> show full processlist;
+-------+------+-----------+---------+---------+------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
+-------+------+-----------+---------+---------+------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
|
|
|
|
|
| 10574 | root | localhost | site     | Query   |    0 | Sending data | SELECT *,
                                           DATE_FORMAT(date_added, '%H:%i') as time,
                                           DATE_FORMAT(date_added, '%e,%c,%w') as news_date,
                                           UNIX_TIMESTAMP(date_added) as rss_date,
                                           (SELECT count(review_id) FROM review r WHERE r.type = 'information' AND r.type_id = i.information_id AND r.status = '1' GROUP BY r.type_id) AS reviews,
                                           (SELECT count(information_id) FROM information_to_views i2views WHERE i.information_id = i2views.information_id GROUP BY i2views.information_id) AS views , MATCH id.meta_information AGAINST ('') AS relev  FROM information i
                         LEFT JOIN information_description id
                                ON (i.information_id = id.information_id) WHERE id.language_id = '3'
                                        AND i.status = '1'
                                        AND i.date_added <= NOW() AND i.information_id != '581' AND i.information_id not in (SELECT information_id FROM information_to_video) ORDER BY relev DESC, i.date_added DESC  LIMIT 0,3 |
|
+-------+------+-----------+---------+---------+------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9 rows in set (0.00 sec)

mysql> show full processlist;
+------+------+-----------+---------+---------+------+-------+-----------------------+
| Id   | User | Host      | db      | Command | Time | State | Info                  |
+------+------+-----------+---------+---------+------+-------+-----------------------+
| 8491 | root | localhost | NULL    | Sleep   |  217 |       | NULL                  |
| 8829 | root | localhost | site | Sleep   |    4 |       | NULL                  |
| 9126 | root | localhost | NULL    | Query   |    0 | NULL  | show full processlist |
+------+------+-----------+---------+---------+------+-------+-----------------------+
3 rows in set (0.00 sec)


mytop:



MySQL on localhost (5.5.20-log)                                                  up 0+00:28:50 [19:27:33]
Queries: 783.8k qps:  464 Slow:     0.0         Se/In/Up/De(%):    87/00/00/01
             qps now:  702 Slow qps: 0.0  Threads:   17 (   5/  21) 86/01/00/01
Cache Hits: 614.3k Hits/s: 363.6 Hits now: 533.3  Ratio: 89.9% Ratio now: 88.2%
Key Efficiency: 92.2%  Bps in/out: 49.5k/ 1.2M   Now in/out: 76.2k/ 1.6M

      Id      User         Host/IP         DB      Time    Cmd Query or State
      --      ----         -------         --      ----    --- ----------
    8829      root       localhost    site         0  Query show full processlist
   13758       site       localhost    site         0  Query select * from video where id_lang=1 and st
   13774      root       localhost        site         0  Query SELECT * FROM extension WHERE `type` = 'mo
   13776      root       localhost        site         0  Sleep
   13759       site       localhost    site         1  Query select * from video where id_lang=1 and st
   13762      root       localhost        site         1  Sleep
   13763       site       localhost    site         1  Sleep
   13768      root       localhost        site         1  Sleep
   13769       site       localhost    site         1  Sleep
   13770      root       localhost        site         1  Sleep
   13771       site       localhost    site         1  Sleep
   13772      root       localhost        site         1  Query SELECT * FROM (SELECT id.title AS title, i
   13773       site       localhost    site         1  Sleep
   13777       site       localhost    site         1  Sleep
   13775       site       localhost    site         1  Sleep
    9126      root       localhost                  347  Sleep
    8491      root       localhost                  564  Sleep

Отредактированно SSD (20.09.2012 20:37:04)

Неактивен

 

#4 20.09.2012 20:44:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Mysql грузит процессор - но подключений практически нету

Бросается в глаза, что везде SELECT *
Может быть все поля требуются не всегда.

Неактивен

 

#5 16.02.2013 23:29:43

SSD
Участник
Зарегистрирован: 20.09.2012
Сообщений: 10

Re: Mysql грузит процессор - но подключений практически нету

Спасибо.

Вынесли Mysql на отдельный сервер.

Все отлично - но иногда вывод странички тормозит - ожидание ответа от"сайта" - и при этом mysqld грузит процессорное время ..

Вот конфиг
innodb_flush_log_at_trx_commit=1
sync_binlog=1
key_buffer_size = 1G
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 64M
read_buffer_size = 12M
read_rnd_buffer_size = 24M
net_buffer_length = 2K
thread_stack = 128K
max_connections=1000
max_join_size=1000000
thread_cache_size=64
query_cache_size=512M
ft_min_word_len=2
log-slow-queries=/var/log/mysql/slow_queries
tmp_table_size=64M
max_heap_table_size=64M
table_cache=1024
-----------------------
Версия
mysql-server-5.5.28 Multithreaded SQL database (server)
-------------------------------

mytop:

MySQL on localhost (5.5.28-log)                                                                                                                                                        up 0+00:14:34 [21:00:53]
Queries: 349.5k qps:  409 Slow:     0.0         Se/In/Up/De(%):    90/00/01/01

Cache Hits: 267.1k Hits/s: 313.0 Hits now:   0.0  Ratio: 84.9% Ratio now:  0.0%
Key Efficiency: 99.6%  Bps in/out: 36.8k/586.4k
Master: mysql-bin.000030/2684553 do:  ign:

       Id      User         Host/IP         DB      Time    Cmd Query or State
       --      ----         -------         --      ----    --- ----------
     4459      tvi3      172.16.0.1 tvi2012103         0  Query DELETE FROM whos_online WHERE time_last_click < '1361040295'
     4460      tvi3      172.16.0.1 tvi2012103         0  Query INSERT INTO whos_online SET customer_id = '0', full_name = 'Guest', session_id = 'q5veap1m4i511on4qpgp48h9a3', ip_address = '85.246.217.235', b
     4461      root       localhost       test         0  Query show full processlist
     4462      tvi3      172.16.0.1 tvi2012103         0  Query SELECT news_id as uid, date_public as date, title, purple_new as isPriority, file_local as video FROM news WHERE in_list = 1 and status = 1 and
     4453      tvi3      172.16.0.1 tvi2012103         1  Query SELECT n.*, DATE_FORMAT(n.date_public , '%H:%i') AS public_time, DATE_FORMAT(n.date_public, '%e,%c,%w') AS public_date, DATE_FORMAT(n.date_efir
     4454      tvi3      172.16.0.1 tvi2012103         1  Query UPDATE news SET views = views + 1 WHERE news_id = '13686'
     4455      tvi3      172.16.0.1 tvi2012103         1  Query UPDATE news SET video_views = video_views + 1 WHERE news_id = '13674'
     4456      tvi3      172.16.0.1 tvi2012103         1  Query SELECT news_id, image, file_local FROM news WHERE news_id = '13689'
     4457      tvi3      172.16.0.1 tvi2012103         1  Query SELECT alias, type_id, UNIX_TIMESTAMP(date_public) AS rss_date FROM news WHERE news_id = '12491'
     4458      tvi3      172.16.0.1 tvi2012103         1  Query SELECT news_id FROM news WHERE alias = 'mCSB_buttons.png'
     2269      root       localhost       test         4  Sleep
      319 replicato      172.16.0.1                  820 Binlog Master has sent all binlog to slave; waiting for binlog to be updated



Может еще подскажите что не так или куда смотреть...

P.S."Стоит ли доверять mysqltuner?
Цитирую
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.28-log
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 2G (Tables: 219)
[--] Data in InnoDB tables: 11M (Tables: 7)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 15

-------- Security Recommendations  -------------------------------------------
[!!] User '@localhost' has no password set.

-------- Performance Metrics -------------------------------------------------
[--] Up for: 17m 7s (434K q [423.396 qps], 5K conn, TX: 596M, RX: 39M)
[--] Reads / Writes: 89% / 11%
[--] Total buffers: 1.7G global + 100.2M per thread (1000 max threads)
[!!] Maximum possible memory usage: 99.6G (1106% of installed RAM)
[OK] Slow queries: 0% (0/434K)
[OK] Highest usage of available connections: 2% (20/1000)
[OK] Key buffer size / total MyISAM indexes: 1.0G/227.2M
[OK] Key buffer hit rate: 99.7% (24M cached / 82K reads)
[OK] Query cache efficiency: 84.9% (333K cached / 392K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 5K sorts)
[!!] Temporary tables created on disk: 41% (842 on disk / 2K total)
[OK] Thread cache hit rate: 99% (20 created / 5K connections)
[OK] Table cache hit rate: 76% (314 open / 410 opened)
[OK] Open file limit used: 4% (544/11K)
[OK] Table locks acquired immediately: 97% (81K immediate / 83K locks)
[OK] InnoDB data size / buffer pool: 11.1M/128.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    MySQL started within last 24 hours - recommendations may be inaccurate
    Reduce your overall MySQL memory footprint for system stability
    When making adjustments, make tmp_table_size/max_heap_table_size equal
    Reduce your SELECT DISTINCT queries without LIMIT clauses
Variables to adjust:
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***
    tmp_table_size (> 64M)
    max_heap_table_size (> 64M)

Неактивен

 

#6 16.02.2013 23:46:31

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Mysql грузит процессор - но подключений практически нету

Про тюнер не знаю. Какой у Вас тип таблиц - MyISAM или InnoDB. Если последнее, то стоит посмотреть на параметры innodb_flush_log_at_trx_commit, innodb_buffer_pool_size, innodb_file_per_table

Неактивен

 

#7 17.02.2013 00:29:35

SSD
Участник
Зарегистрирован: 20.09.2012
Сообщений: 10

Re: Mysql грузит процессор - но подключений практически нету

rgbeast написал:

Про тюнер не знаю. Какой у Вас тип таблиц - MyISAM или InnoDB. Если последнее, то стоит посмотреть на параметры innodb_flush_log_at_trx_commit, innodb_buffer_pool_size, innodb_file_per_table

MyISAM и InnoDB
46 таблиц( всего 138.1 МБ    )
из них в основном MyISAM(>98%)
Что может посоветуете?

Неактивен

 

#8 17.02.2013 12:01:52

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Mysql грузит процессор - но подключений практически нету

Включите лог медленных запросов, а потом проанализируйте его утилитой pt-query-digest. Лидеров оптимизируйте.

Неактивен

 

#9 18.02.2013 00:19:01

SSD
Участник
Зарегистрирован: 20.09.2012
Сообщений: 10

Re: Mysql грузит процессор - но подключений практически нету

rgbeast написал:

Включите лог медленных запросов, а потом проанализируйте его утилитой pt-query-digest. Лидеров оптимизируйте.

slow-log ведется - но там редко когда попадаются медленные запросы.

Может еще скажите - отчего так может резко прыгать кол-во запросов?То было 120 вдруг - 3667 и так плавает вплоть и до 5000 запросов в сек.Это вообще не много?(Раньше такого не наблюдал - база всего  46 таблиц MyISAM( размер базы 138.1 МБ    )

И подскажите пожалуйста что означает в mytop`к запись вида

User - unauthent  c левого внешнего IP  -Cmd - Connec  - reading from net ? Кто то пытается подключиться? (Потом этаже запись уже с локального ip)не понимаю..

MySQL on localhost (5.5.28-log)                                                                                                             up 1+00:55:49 [21:42:08]
Queries: 25.7M  qps:  300 Slow:     3.0         Se/In/Up/De(%):    90/00/01/01
             qps now: 3667 Slow qps: 0.0  Threads:   10 (   2/  11) 96/00/00/00
Cache Hits: 19.7M Hits/s: 230.3 Hits now: 3450.0  Ratio: 84.9% Ratio now: 98.0%
Key Efficiency: 99.8%  Bps in/out: 27.5k/418.1k   Now in/out: 260.9k/ 1.9M
Master: mysql-bin.000030/202512875 do:  ign:


Заранее спасибо

Неактивен

 

#10 18.02.2013 01:28:25

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Mysql грузит процессор - но подключений практически нету

Смотрите SHOW FULL PROCESSLIST, какие запросы выполняются в какой момент. Резкий скачок числа запросов должен иметь какую-то причину.

unauthenticated user - это обычно пользователь, который еще не прошел авторизацию, но уже подключился. IP адрес точно левый и внешний?

Неактивен

 

#11 18.02.2013 01:38:43

SSD
Участник
Зарегистрирован: 20.09.2012
Сообщений: 10

Re: Mysql грузит процессор - но подключений практически нету

rgbeast написал:

Смотрите SHOW FULL PROCESSLIST, какие запросы выполняются в какой момент. Резкий скачок числа запросов должен иметь какую-то причину.

А как именно грамотно посмотреть?Если там к примеру 2000 запросов в секунду - и запустив SHOW FULL PROCESSLIST - я просто увижу кучу запросов - может есть методика анализа?И правильно ли я понимаю - что запросы это все запросы и внутренние mysql тоже?А не только поступающие от веб сервера..


rgbeast написал:

unauthenticated user - это обычно пользователь, который еще не прошел авторизацию, но уже подключился. IP адрес точно левый и внешний?

Да - внешний и левый - китай.

Отредактированно SSD (18.02.2013 01:47:41)

Неактивен

 

#12 18.02.2013 09:16:19

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Mysql грузит процессор - но подключений практически нету

SSD написал:

А как именно грамотно посмотреть?Если там к примеру 2000 запросов в секунду - и запустив SHOW FULL PROCESSLIST - я просто увижу кучу запросов - может есть методика анализа?И правильно ли я понимаю - что запросы это все запросы и внутренние mysql тоже?А не только поступающие от веб сервера..

Можно использовать INFORMATION_SCHEMA.PROCESSLIST для структурирования информации. Все запросы в MySQL вызваны клиентом - внутренних не бывает.

SSD написал:

Да - внешний и левый - китай.

Может быть это попытка подбора пароля. Поменяйте порт на нестандартный 13306, например.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson