Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Всем привет.
Помогите пжл разобраться - не понятно почему 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..
Неактивен
mytop вам пишет, что 300 запросов в секунду, но почему-то не показывает сами запросы. Попробуйте SHOW FULL PROCESSLIST несколько раз, подключившись к 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)
Неактивен
Бросается в глаза, что везде SELECT *
Может быть все поля требуются не всегда.
Неактивен
Спасибо.
Вынесли 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)
Неактивен
Про тюнер не знаю. Какой у Вас тип таблиц - MyISAM или InnoDB. Если последнее, то стоит посмотреть на параметры innodb_flush_log_at_trx_commit, innodb_buffer_pool_size, innodb_file_per_table
Неактивен
rgbeast написал:
Про тюнер не знаю. Какой у Вас тип таблиц - MyISAM или InnoDB. Если последнее, то стоит посмотреть на параметры innodb_flush_log_at_trx_commit, innodb_buffer_pool_size, innodb_file_per_table
MyISAM и InnoDB
46 таблиц( всего 138.1 МБ )
из них в основном MyISAM(>98%)
Что может посоветуете?
Неактивен
Включите лог медленных запросов, а потом проанализируйте его утилитой pt-query-digest. Лидеров оптимизируйте.
Неактивен
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:
Заранее спасибо
Неактивен
Смотрите SHOW FULL PROCESSLIST, какие запросы выполняются в какой момент. Резкий скачок числа запросов должен иметь какую-то причину.
unauthenticated user - это обычно пользователь, который еще не прошел авторизацию, но уже подключился. IP адрес точно левый и внешний?
Неактивен
rgbeast написал:
Смотрите SHOW FULL PROCESSLIST, какие запросы выполняются в какой момент. Резкий скачок числа запросов должен иметь какую-то причину.
А как именно грамотно посмотреть?Если там к примеру 2000 запросов в секунду - и запустив SHOW FULL PROCESSLIST - я просто увижу кучу запросов - может есть методика анализа?И правильно ли я понимаю - что запросы это все запросы и внутренние mysql тоже?А не только поступающие от веб сервера..
rgbeast написал:
unauthenticated user - это обычно пользователь, который еще не прошел авторизацию, но уже подключился. IP адрес точно левый и внешний?
Да - внешний и левый - китай.
Отредактированно SSD (18.02.2013 01:47:41)
Неактивен
SSD написал:
А как именно грамотно посмотреть?Если там к примеру 2000 запросов в секунду - и запустив SHOW FULL PROCESSLIST - я просто увижу кучу запросов - может есть методика анализа?И правильно ли я понимаю - что запросы это все запросы и внутренние mysql тоже?А не только поступающие от веб сервера..
Можно использовать INFORMATION_SCHEMA.PROCESSLIST для структурирования информации. Все запросы в MySQL вызваны клиентом - внутренних не бывает.
SSD написал:
Да - внешний и левый - китай.
Может быть это попытка подбора пароля. Поменяйте порт на нестандартный 13306, например.
Неактивен
Страниц: 1