Большая нагрузка mysql, как найти причину

Статус
В этой теме нельзя размещать новые ответы.
  • Заблокирован
  • #11
2.6.18-128.1.10.el5PAE #1 SMP Thu May 7 11:14:31 EDT 2009 i686 i686 i386 GNU/Linux
CENTOS 5.3 i686 standard
чем запросы анализировать?
Ясно, с ядром всё ок, PAE работает до 64гб :)

Запросы анализировать... можешь попробовать с помощью Для просмотра ссылки Войди или Зарегистрируйся, но для начала я бы поюзал mytop, как правило и его хватает, чтобы отследить проблему.
Софта полно, тут уж на вкус и цвет, и от конкретных потребностей, может достаточно логи проанализировать, или же нужно в реальном времени следить...
 
Позвольте, а каким образом myisamchk влияет на работу mysqld ? :)
А для чего вообще MyISAM нужен? Для красоты? :D
Глупые вопросы задаете, ей богу.

Добавлено через 1 минуту
2.6.18-128.1.10.el5PAE #1 SMP Thu May 7 11:14:31 EDT 2009 i686 i686 i386 GNU/Linux
CENTOS 5.3 i686 standard

чем запросы анализировать?
В вашем конфиге заккоментированы строки для логирования "длинных" запросов. Раскомментируйте и посмотрите логи.
 
  • Заблокирован
  • #13
А для чего вообще MyISAM нужен? Для красоты? :D
Глупые вопросы задаете, ей богу.
Уважаемый, кто из нас глупее, и в какой области, надеюсь выяснять не будем? :)
Я говорю о том, что myisamchk и mysqld, это разные вещи!
И приплетать сюда MyISAM по меньшей мере... не корректно, имхо ;)

myisamchk используется для Для просмотра ссылки Войди или Зарегистрируйся таблиц, и является отдельной программой, которую запускают лишь когда это необходимо.
Во время работы myasmchk возможна повышенная нагрузка на цпу, но она ни как не влияет на работу mysqld в штатном режиме.

Если я не прав, убедите меня в обратном!



Мир, дружба, жвачка :)
 
mysql -e "show processlist;" -u root -ppas
+--------+-----------+-----------+---------------+----------------+------+--------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+-----------+-----------+---------------+----------------+------+--------------------+------------------+
| 456897 | DELAYED | localhost | ald_blog | Delayed insert | 64 | Waiting for INSERT | |
| 457045 | eximstats | localhost | eximstats | Sleep | 104 | | NULL |
| 457720 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+--------+-----------+-----------+---------------+----------------+------+--------------------+------------------+
mysql -e "show full processlist;" -u root -ppas
+--------+----------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+----------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| 456897 | DELAYED | localhost | ald_blog | Delayed insert | 166 | Waiting for INSERT | |
| 457771 | eximstats | localhost | eximstats | Sleep | 2 | | NULL |
| 458299 | antidotw_shade | localhost | antw_anot | Query | 1 | Sending data | SELECT COUNT(*) as count FROM dle_post WHERE approve AND allow_main AND date < '2009-10-16 00:11:04' |
| 458303 | root | localhost | NULL | Query | 0 | NULL | show full processlist |
+--------+----------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+

mytop

MySQL on localhost (5.0.81-community) up 1+00:20:59 [00:25:27]
Queries: 27.0 qps: 0 Slow: 0.0 Se/In/Up/De(%:( 29391830/00/00/00
qps now: 0 Slow qps: 0.0 Threads: 4 ( 2/ 38) 16400/00/00/00
Key Efficiency: 97.5% Bps in/out: 0.0/ 1.1 Now in/out: 8.4/ 1.3k

Id User Host/IP DB Time Cmd Query or State
-- ---- ------- -- ---- --- ----------
463994 root localhost hotg_1 0 Query show full processlist
464454 veter72r localhost vetr72r_0 0 Query DELETE FROM dle_post WHERE expires != '0000-00-00' AND expires < '2009-10-16'
464432 DELAYED localhost zmi154_k 3 Delaye Waiting for INSERT
463559 eximstats localhost eximstats 10 Sleep
 
  • Заблокирован
  • #15
mysql -e "show processlist;" -u root -ppas
Добавлено через 1 минуту
поставил mytop но не разберусь как его запустить:
mytop
Cannot connect to MySQL server. Please check the:
* database you specified "test" (default is "test")
* username you specified "root" (default is "root")
* password you specified "" (default is "")
* hostname you specified "localhost" (default is "localhost")
* port you specified "3306" (default is 3306)
* socket you specified "" (default is "")
The options my be specified on the command-line or in a ~/.mytop
config file. See the manual (perldoc mytop) for details.
Here's the exact error from DBI. It might help you debug:
Unknown database 'test'


mytop -uимя_юзера -pпароль

ещё есть mtop:

mtop --dbuser=имя_юзера --password=пароль
 
вот еще top

top - 00:37:10 up 59 days, 4:15, 1 user, load average: 5.38, 5.08, 5.43
Tasks: 248 total, 6 running, 233 sleeping, 6 stopped, 3 zombie
Cpu(s:( 63.2%us, 21.5%sy, 0.0%ni, 14.3%id, 0.3%wa, 0.0%hi, 0.7%si, 0.0%st
Mem: 8310732k total, 6829840k used, 1480892k free, 418512k buffers
Swap: 16779852k total, 10420k used, 16769432k free, 5063672k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14294 mysql 15 0 263m 164m 4664 S 139.8 2.0 557:53.36 mysqld
 
  • Заблокирован
  • #17
По моему у Вас не эффективно используется озу, пройдитесь ещё раз по конфигу my.cnf, секция [mysqld], выставьте побольше кеши, и остальные параметры приведите в норму, исходя из ссылок, что я приводил выше...
Хотя, если кривой скрипт, никакие настройки не спасут!!!
Посмотрите с помощью mytop, какие запросы идут в момент загрузки цпу, ничего не "виснет" ли? :confused:
 
По моему у Вас не эффективно используется озу, пройдитесь ещё раз по конфигу my.cnf, секция [mysqld], выставьте побольше кеши, и остальные параметры приведите в норму, исходя из ссылок, что я приводил выше...
Хотя, если кривой скрипт, никакие настройки не спасут!!!
Посмотрите с помощью mytop, какие запросы идут в момент загрузки цпу, ничего не "виснет" ли? :confused:
Ну, знаете, вдруг там myisamchk в кроне стоит на каждый час :D.
Да, мир :).

В принципе, кривые скрипты тоже могут быть виной - тяжелые выборки, LIKE-поиски по большому количеству данных...
Вариантов - десятки. Надо мониторить состояние.
 
Запустил myisamchk
вот что он мне выдал:
myisamchk
Warning: option 'key_buffer_size': unsigned value 18446744073709551615 adjusted to 4294963200
Warning: option 'read_buffer_size': unsigned value 18446744073709551615 adjusted to 4294967295
Warning: option 'write_buffer_size': unsigned value 18446744073709551615 adjusted to 4294967295
Warning: option 'sort_buffer_size': unsigned value 18446744073709551615 adjusted to 4294967295
myisamchk Ver 2.7 for pc-linux-gnu at i686
By Monty, for your professional use
This software comes with NO WARRANTY: see the PUBLIC for details.
Description, check and repair of MyISAM tables.
Used without options all tables on the command will be checked for errors
Usage: myisamchk [OPTIONS] tables[.MYI]
Global options:
-?, --help Display this help and exit.
-O, --set-variable var=option.
Change the value of a variable. Please note that
this option is deprecated; you can set variables
directly with '--variable-name=value'.
-t, --tmpdir=path Path for temporary files. Multiple paths can be
specified, separated by colon :)), they will be used
in a round-robin fashion.
-s, --silent Only print errors. One can use two -s to make
myisamchk very silent.
-v, --verbose Print more information. This can be used with
--description and --check. Use many -v for more verbosity.
-V, --version Print version and exit.
-w, --wait Wait if table is locked.
Check options (check is the default action for myisamchk:(
-c, --check Check table for errors.
-e, --extend-check Check the table VERY throughly. Only use this in
extreme cases as myisamchk should normally be able to
find out if the table is ok even without this switch.
-F, --fast Check only tables that haven't been closed properly.
-C, --check-only-changed
Check only tables that have changed since last check.
-f, --force Restart with '-r' if there are any errors in the table.
States will be updated as with '--update-state'.
-i, --information Print statistics information about table that is checked.
-m, --medium-check Faster than extend-check, but only finds 99.99% of
all errors. Should be good enough for most cases.
-U --update-state Mark tables as crashed if you find any errors.
-T, --read-only Don't mark table as checked.
Repair options (When using '-r' or '-o':(
-B, --backup Make a backup of the .MYD file as 'filename-time.BAK'.
--correct-checksum Correct checksum information for table.
-D, --data-file-length=# Max length of data file (when recreating data
file when it's full).
-e, --extend-check Try to recover every possible row from the data file
Normally this will also find a lot of garbage rows;
Don't use this option if you are not totally desperate.
-f, --force Overwrite old temporary files.
-k, --keys-used=# Tell MyISAM to update only some specific keys. # is a
bit mask of which keys to use. This can be used to
get faster inserts.
--max-record-length=#
Skip rows bigger than this if myisamchk can't allocate
memory to hold it.
-r, --recover Can fix almost anything except unique keys that aren't
unique.
-n, --sort-recover Forces recovering with sorting even if the temporary
file would be very big.
-p, --parallel-recover
Uses the same technique as '-r' and '-n', but creates
all the keys in parallel, in different threads.
-o, --safe-recover Uses old recovery method; Slower than '-r' but can
handle a couple of cases where '-r' reports that it
can't fix the data file.
--character-sets-dir=...
Directory where character sets are.
--set-collation=name
Change the collation used by the index.
-q, --quick Faster repair by not modifying the data file.
One can give a second '-q' to force myisamchk to
modify the original datafile in case of duplicate keys.
NOTE: Tables where the data file is currupted can't be
fixed with this option.
-u, --unpack Unpack file packed with myisampack.
Other actions:
-a, --analyze Analyze distribution of keys. Will make some joins in
MySQL faster. You can check the calculated distribution
by using '--description --verbose table_name'.
--stats_method=name Specifies how index statistics collection code should
treat NULLs. Possible values of name are "nulls_unequal"
(default for 4.1/5.0), "nulls_equal" (emulate 4.0), and
"nulls_ignored".
-d, --description Prints some information about table.
-A, --set-auto-increment[=value]
Force auto_increment to start at this or higher value
If no value is given, then sets the next auto_increment
value to the highest used value for the auto key + 1.
-S, --sort-index Sort index blocks. This speeds up 'read-next' in
applications.
-R, --sort-records=#
Sort records according to an index. This makes your
data much more localized and may speed up things
(It may be VERY slow to do a sort the first time!).
-b, --block-search=#
Find a record, a block at given offset belongs to.
Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf
The following groups are read: myisamchk
The following options may be given as the first argument:
--print-defaults Print the program argument list and exit
--no-defaults Don't read default options from any options file
--defaults-file=# Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
character-sets-dir (No default value)
data-file-length 0
keys-used 18446744073709551615
max-record-length 9223372036854775807
set-auto-increment 0
set-collation (No default value)
sort-records 0
tmpdir (No default value)
key_buffer_size 33554432
key_cache_block_size 1024
myisam_block_size 1024
read_buffer_size 16777216
write_buffer_size 16777216
sort_buffer_size 33554432
sort_key_blocks 16
decode_bits 9
ft_min_word_len 4
ft_max_word_len 84
ft_stopword_file (No default value)
stats_method nulls_unequal

я сделал оптимизацию и восстановление таблиц так: mysqlcheck -u root -p -Aor
но нагрузка так и осталась высокой

и где можно скачать MySQL Query Analyzer(бесплатно) ?
 
посмотрел состояния в phpmyadmin, вот что выделено красным:

Innodb_buffer_pool_reads 2,607 Количество последовательных запросов на чтение, которые InnoDB не смог выполнить из буферного пула и использовал постраничное чтение.

Slow_queries 2 Количество запросов, выполнявшихся более long_query_time секунд.

Handler_read_rnd 28 M Количество запросов, на чтение строки, основанных на ее позиции. Большое значение переменной может быть обусловлено частым выполнением запросов использующих сортировку результата, выполнением большого числа запросов требующих полного сканирования таблиц, наличием объединений не использующих индексы надлежащим образом.

Handler_read_rnd_next 687 M Количество запросов на чтение следующей строки из файла данных. Данное значение будет высоким, при частом сканировании таблиц. Обычно это означает, что таблицы не проиндексированы надлежащим образом или запросы не используют преимущества индексов.

Qcache_lowmem_prunes 789 k Количество запросов, удаленных из кеша для освобождения памяти под кеширование новых запросов. Эта информация может помочь при настройке размера кеша запросов. Кеш запросов использует стратегию LRU (дольше всего не использующиеся страницы заменяются новыми) при принятии решения об удаления запроса из кеша.

Created_tmp_disk_tables 113 k Количество временных таблиц, автоматически созданных сервером на диске, во время выполнения SQL-выражений. Если значение Created_tmp_disk_tables велико, следует увеличить значение переменной tmp_table_size, чтобы временные таблицы располагались в памяти, а не на жестком диске.

Delayed_errors 4 Количество ошибок, возникших в процессе обработки запросов INSERT DELAYED, например, из-за дублирования ключей.

Key_reads 5,805 k Количество физических операций чтения блока индексов с диска. Если значение велико - скорее всего, задано слишком маленькое значение переменной key_buffer_size. Коэффициент неудачных обращений к кешу может быть рассчитан как: Key_reads/Key_read_requests.

Select_full_join 1,940 Количество запросов-объединений, выполненных без использования индексов. Если значение переменной не равно 0, рекомендуется проверить индексы таблиц.

Sort_merge_passes 2,275 Количество проходов, сделанных алгоритмом сортировки. При большом значении следует увеличить значение переменной sort_buffer_size.

Opened_tables 188 k Общее количество открывавшихся таблиц. При большом значении переменной рекомендуется увеличить размер кеша таблиц (table_cache).

Table_locks_waited 738 Количество запросов на блокировку таблицы, которые были удовлетворены только после определенного периода ожидания. Если значение велико и есть проблемы с производительностью, необходимо сначала оптимизировать свои запросы, а затем разбить свою таблицу (или таблицы) или использовать репликацию.



и вот общая статистика

статистика по сетевому трафику MySQL-сервера со времени его запуска.

Трафик o в час
Принято 1,051 МБ 105 МБ
Отправлено 1,082 МБ 109 МБ
Всего 2,133 МБ 214 МБ
Соединения o в час %
Максимально одновременных 23 --- ---
Неудачных попыток 491 49.30 0.37%
Прерваны 22 2.21 0.02%
Всего 132 k 13.24 k 100.00%
Статистика запросов: со времени запуска, на сервер было отослано запросов - 6,080,159.

Всего o в час o в минуту o в секунду
6,080 k 610.44 k 10.17 k 169.57
Тип запроса o в час %
admin commands 21 k 2,141.71 0.36%
alter db 0 0.00 0.00%
alter table 0 0.00 0.00%
analyze 0 0.00 0.00%
backup table 0 0.00 0.00%
begin 4,291 430.81 0.07%
call procedure 0 0.00 0.00%
change db 103 k 10.34 k 1.73%
change master 0 0.00 0.00%
check 0 0.00 0.00%
checksum 0 0.00 0.00%
commit 4,290 430.71 0.07%
create db 0 0.00 0.00%
create function 0 0.00 0.00%
create index 0 0.00 0.00%
create table 608 61.04 0.01%
create user 0 0.00 0.00%
delete 69 k 6,882.94 1.15%
delete multi 0 0.00 0.00%
do 0 0.00 0.00%
drop db 0 0.00 0.00%
drop function 0 0.00 0.00%
drop index 0 0.00 0.00%
drop table 40 4.02 0.00%
drop user 0 0.00 0.00%
flush 328 32.93 0.01%
grant 82 8.23 0.00%
ha close 0 0.00 0.00%
ha open 0 0.00 0.00%
ha read 0 0.00 0.00%
help 0 0.00 0.00%
insert 63 k 6,371.81 1.07%
insert select 82 8.23 0.00%
kill 0 0.00 0.00%
load 0 0.00 0.00%
load master data 0 0.00 0.00%
load master table 0 0.00 0.00%
lock tables 6,502 652.79 0.11%
optimize 2 0.00 k 0.00%
preload keys 0 0.00 0.00%
purge 0 0.00 0.00%
purge before date 0 0.00 0.00%
rename table 0 0.00 0.00%
repair 20 k 2,032.37 0.34%
replace 4,122 413.84 0.07%
replace select 0 0.00 0.00%
reset 0 0.00 0.00%
restore table 0 0.00 0.00%
revoke 0 0.00 0.00%
revoke all 0 0.00 0.00%
Тип запроса o в час %
rollback 0 0.00 0.00%
savepoint 0 0.00 0.00%
select 1,375 k 138.01 k 23.11%
set option 228 k 22.89 k 3.83%
show binlog events 0 0.00 0.00%
show binlogs 4 0.00 k 0.00%
show charsets 4,158 417.46 0.07%
show collations 28 2.81 0.00%
show column types 0 0.00 0.00%
show create db 0 0.00 0.00%
show create table 20 k 2,023.94 0.34%
show databases 619 62.15 0.01%
show errors 0 0.00 0.00%
show fields 24 k 2,374.93 0.40%
show grants 1,117 112.15 0.02%
show innodb status 0 0.00 0.00%
show keys 6 0.00 k 0.00%
show logs 0 0.00 0.00%
show master status 0 0.00 0.00%
show ndb status 0 0.00 0.00%
show new master 0 0.00 0.00%
show open tables 0 0.00 0.00%
show privileges 0 0.00 0.00%
show processlist 310 31.12 0.01%
show slave hosts 0 0.00 0.00%
show slave status 0 0.00 0.00%
show status 330 33.13 0.01%
show storage engines 0 0.00 0.00%
show tables 4,848 486.73 0.08%
show triggers 22 k 2,198.03 0.37%
show variables 1,350 135.54 0.02%
show warnings 0 0.00 0.00%
slave start 0 0.00 0.00%
slave stop 0 0.00 0.00%
stmt close 742 74.50 0.01%
stmt execute 742 74.50 0.01%
stmt fetch 0 0.00 0.00%
stmt prepare 742 74.50 0.01%
stmt reset 580 58.23 0.01%
stmt send long data 0 0.00 0.00%
truncate 279 28.01 0.00%
unlock tables 6,551 657.71 0.11%
update 108 k 10.85 k 1.82%
update multi 579 58.13 0.01%
xa commit 0 0.00 0.00%
xa end 0 0.00 0.00%
xa prepare 0 0.00 0.00%
xa recover 0 0.00 0.00%
xa rollback 0 0.00 0.00%
xa start 0 0.00 0.00%
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху