SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 21.06.2010 12:41:20

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Зависает MySQL подскажите настройки? :@(

Стало виснуть MySQL
в top вижу процес mysql доходит по памяти до 528-612MB и зависает
свободной памяти еще остается 240 mb

помогает service mysqld restart и работет пока память вновь не подберется к 600
Все настройки уже перепробовал, что можно еще сделать? Можно как то сделать чтобы mysql сам перезагружался когда используюмая память подходит к 500mb?


вот так он виснет только тут 205 mb он в самом начале пока не разогнался тоже виснет а намертво когда уже 500-600
http://s42.radikal.ru/i098/1006/10/3c3392264331.png

имею
VPS
CentOS Mysql 5
процессор 4×1000
память 2GB
форумы phpBB3
две базы 1.8Gb и 0.3Gb

my.cnf


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

key_buffer=1350M
table_cache=512 (пробовал 1024)
read_buffer=36K  (пробовал 1m)
sort_buffer=16K  (пробовал 1m)
join_buffer_size=512K (пробовал 5)
max_connections=200
wait_timeout=100
max_connect_errors=3
query_cache_limit=2M (пробовал 1)
query_cache_size=256M (пробовал 128)
query_cache_type=1
tmp_table_size=512M (пробовал отключать)
thread_cache_size=10
#table_cache=16K
connect_timeout=10
interactive_timeout=8
#thread_concurrency=8
skip-innodb
skip-bdb
#innodb_buffer_poll_size=256M
#innodb_additional_mem_pool_size=20M
#innodb_log_file_size=12M
#innodb_log_buffer_size=4
#innodb_thread_concurrency=8
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


 


mysqltuner.pl
>>  MySQLTuner 1.0.1 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at <a href="http://mysqltuner.com/">http://mysqltuner.com/</a>
 >>  Run with '--help' for additional options and output filtering

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.77
[OK] Operating on 32-bit architecture with less than 2GB RAM

-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated -InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 866M (Tables: 134)
[!!] Total fragmented tables: 26

-------- Performance Metrics -------------------------------------------------
[--] Up for: 45m 22s (62K q [22.843 qps], 6K conn, TX: 196M, RX: 7M)
[--] Reads / Writes: 84% / 16%
[--] Total buffers: 1.6G global + 1.0M per thread (200 max threads)
[!!] Maximum possible memory usage: 1.8G (89% of installed RAM)
[OK] Slow queries: 0% (6/62K)
[OK] Highest usage of available connections: 25% (51/200)
[OK] Key buffer size / total MyISAM indexes: 1.3G/1.2G
[OK] Key buffer hit rate: 99.2% (2M cached / 22K reads)
[OK] Query cache efficiency: 31.4% (12K cached / 39K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (22 temp sorts / 2K sorts)
[!!] Joins performed without indexes: 26
[OK] Temporary tables created on disk: 4% (123 on disk / 2K total)
[OK] Thread cache hit rate: 98% (78 created / 6K connections)
[OK] Table cache hit rate: 98% (318 open / 324 opened)
[OK] Open file limit used: 38% (469/1K)
[OK] Table locks acquired immediately: 97% (36K immediate / 37K locks)

-------- 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
    Enable the slow query log to troubleshoot bad queries
    Adjust your join queries to always utilize indexes
Variables to adjust:
    join_buffer_size (> 512.0K, or always use indexes with joins)
 

Отредактированно Jabali (21.06.2010 13:01:42)

Неактивен

 

#2 21.06.2010 14:02:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

Попробуйте уменьшить key_buffer_size — основная память утекает именно
туда. Скорее всего, проблема не у Вас, а у хостера — Вы не видите, что
реально происходит на машинке. Есть большое подозрение, что машинка
улезает в swap и поэтому начинает тормозить.

Еще интересное наблюдение — у Вас (при том, что MySQL сожрал лишь
10% ОЗУ) вся память забита. Чем? Апачи? 90 штук?

Неактивен

 

#3 21.06.2010 15:20:14

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

А Mysqld разве не резервирует всю память (та что по настрйокам получается) под себя? вот она и висит 1650 mb VIRT
Уменьшил key_buffer_size  до 650 mb смотрю! Сейчас в top он показывает всего 950 mb VIRT и RES 88mb(растёт - а с предыдушими настрйокмаи он начинал с 170mb)

Да нет апаче не особо нагружает - в подвисании апаче как то тоже участвует когда вешается MYSQL то апаче отдает html пока все не заполнять неотвечанные запросы с форума по php и вот тут всё виснет! Но свободная память всё равно остается!

У меня vps от hc.ru там один ответ на всё "вы купили vps должны сами решать все проблемы" - не хорошие люди! Я тоже думаю что это у них с их виртуозами виртуализации и даже то что заявленно по ресурсам не работает!

Отредактированно Jabali (21.06.2010 15:23:19)

Неактивен

 

#4 21.06.2010 15:43:36

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

Выделенная память и используемая память — это разные вещи. В Linux выделить
памяти можно практически сколько угодно (можете, например, написать программу,
которая, выделит терабайт — вполне себе нормальное действие), но вот использо-
вать реально всю эту память получится не всегда.

Неактивен

 

#5 22.06.2010 09:35:52

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

После уменьшения key_buffer_size  до 650 теперь зависло когда дошло до 214 mb.... что еще можно попробовать научного? Мне только один выход видетяс перезагружать MYSQL каждые 10 часов :@))))))

Неактивен

 

#6 22.06.2010 10:13:22

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

Поставьте atop, сделайте снимки раз в минуту, пусть поснимает систему.
Интересно распределение памяти на время подвисания.

Неактивен

 

#7 22.06.2010 10:45:09

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

С atop у меня возникли какието проблемы устанвоил вместо него mytop
Для centos инструкция если кому вдруг http://www.sohailriaz.com/how-to-instal … for-mysql/

И так повезло что сервер как раз начал виснут

далее результат mytop, top, и my.cnf

http://s49.radikal.ru/i124/1006/75/70f2192f6e0d.png
http://s60.radikal.ru/i169/1006/9f/29dfb9a10f19.png

   hmm    hmm    hmm    hmm    hmm    hmm    hmm    hmm

Неактивен

 

#8 22.06.2010 12:27:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

atop и mytop — это разные вещи. Но по крайней мере видно, что сервер
таки у Вас не виснет wink

mysql -e "show processlist" >filename
и потом в файлике смотрите, какие процессы что едят. Интересует состояние
тех процессов, которые должны быть точечными, но выполняются по 120
секунд. Если waiting for table (рабочее предположение), то ищите того, кто
блокирует таблицы.

Неактивен

 

#9 22.06.2010 12:54:27

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

Это надо сделать когда зависнет? Жду!

То есть что поулчеатся Mysql работатает но не отвечает и сайт виснет потому что в apache переполняются подключения не отвеченные запросы форума? Кто виноват то?

Отредактированно Jabali (22.06.2010 12:58:16)

Неактивен

 

#10 22.06.2010 13:16:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

«Кто виноват» и «что делать» — это два самых интересных вопроса жизни wink

Как только найдете того, кто блокирует таблицы, найдете и того, кто виноват.
Ну, и решите, что делать smile

Неактивен

 

#11 22.06.2010 14:19:51

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

1. Ну воздействие третей стороны или физ лиц я исключаю полностью - потому что виснет на оперделенном уровне памяти который завист от настроек!
2. MYSQL я подозреваю потому что после перезагрузки оного все работает до смертельного уровня памяти см. выше!
3. ... что делать прям не знаю, обычно хостер денег просит а тут не гворят ни почему ни что надо сделать чтобы этого не было

Жду завиания запустил:
top
atop
atop -m
mytop

Неактивен

 

#12 22.06.2010 15:05:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

/usr/bin/atop -a -w /var/log/atop.log 60 smile Будет писать atop.log, который потом можно будет
читать. Вполне себе удобно, чтобы не отслеживать глазами.

Неактивен

 

#13 23.06.2010 09:38:58

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

paulus написал:

/usr/bin/atop -a -w /var/log/atop.log 60 smile Будет писать atop.log, который потом можно будет
читать. Вполне себе удобно, чтобы не отслеживать глазами.

Пишет! Но как остановить не знал перезагрузился! :@)))))

У меня новая версия!

atop в первые секунды после включения показал странные данные, может быть зависание связано с переполнением MYSQL  hdd??? У меня свободно 11gb
http://s60.radikal.ru/i167/1006/bc/66a3f9008e52.png

Отредактированно Jabali (23.06.2010 09:46:16)

Неактивен

 

#14 23.06.2010 10:57:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

А со списком процессов в MySQL то что?

Неактивен

 

#15 23.06.2010 15:22:22

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

А он пока не вис при мне, но я уменьшил в два раза процесы Apache в my.cnf тоже что то уменьшил, но в основном апаче

про Mysql процессы что надо в atop набирать когда он зависнит?

Отредактированно Jabali (23.06.2010 15:29:30)

Неактивен

 

#16 23.06.2010 15:39:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

mysql -e "show processlist". Там должна быть куча запросов одинаковых,
которые ждут таблицу, и один, который не одинаковый, — который ее
блокирует smile

Неактивен

 

#17 23.06.2010 16:13:27

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

вот сейчас сшастливо завис на 557 mb и отвис быстро не считается за обычное зависание долго он уже работает больеш 12 часов

mysql -e "show processlist"
+--------+---------+-----------+---------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+
| Id     | User    | Host      | db      | Command | Time | State                | Info                                                                                                 |
+--------+---------+-----------+---------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+
| 190598 | mfora7d | localhost | mfora7d | Query   |  166 | Copying to tmp table | SELECT f.*, t.*, p.*, u.* FROM (phpbb_posts p, phpbb_users u, phpbb_topics t) LEFT JOIN phpbb_forums |
| 190600 | mfora7d | localhost | mfora7d | Query   |  164 | Locked               | UPDATE phpbb_topics
        SET topic_views = topic_views + 1, topic_last_view_time = 1277295037
        WHERE t |
| 190601 | mfora7d | localhost | mfora7d | Query   |  162 | Locked               | SELECT t.*, f.* FROM (phpbb_forums f, phpbb_topics t) WHERE t.topic_id = 4983 AND (f.forum_id = t.fo |
| 190602 | mfora7d | localhost | mfora7d | Query   |  162 | Locked               | SELECT forum_id
            FROM phpbb_topics
            WHERE topic_id = 4643                                        |
| 190603 | mfora7d | localhost | mfora7d | Query   |  162 | Locked               | SELECT t.*, f.* FROM (phpbb_forums f, phpbb_topics t) WHERE t.topic_id = 8509 AND (f.forum_id = t.fo |
| 190604 | mfora7d | localhost | mfora7d | Query   |  162 | Locked               | SELECT t.*, f.*, tw.notify_status, bm.topic_id as bookmarked, tt.mark_time, ft.mark_time as forum_ma |
| 190605 | mfora7d | localhost | mfora7d | Query   |  161 | Locked               | SELECT t.*, tp.topic_posted, tt.mark_time FROM (phpbb_topics t) LEFT JOIN phpbb_topics_posted tp ON  |
| 190606 | mfora7d | localhost | mfora7d | Query   |  160 | Locked               | SELECT t.*, f.* FROM (phpbb_forums f, phpbb_topics t) WHERE t.topic_id = 8701 AND (f.forum_id = t.fo |
| 190607 | mfora7d | localhost | mfora7d | Query   |  160 | Locked               | SELECT t.*, f.*, tw.notify_status, bm.topic_id as bookmarked, tt.mark_time, ft.mark_time as forum_ma |
| 190608 | mfora7d | localhost | mfora7d | Query   |  159 | Locked               | SELECT t.*, tp.topic_posted, tt.mark_time FROM (phpbb_topics t) LEFT JOIN phpbb_topics_posted tp ON  |
| 190609 | mfora7d | localhost | mfora7d | Query   |  159 | Locked               | SELECT t.*, tp.topic_posted, tt.mark_time FROM (phpbb_topics t) LEFT JOIN phpbb_topics_posted tp ON  |
| 190611 | mfora7d | localhost | mfora7d | Query   |  156 | Locked               | SELECT t.*, f.* FROM (phpbb_forums f, phpbb_topics t) WHERE t.topic_id = 3790 AND (f.forum_id = t.fo |
| 190612 | mfora7d | localhost | mfora7d | Query   |  154 | Locked               | SELECT t.*, f.* FROM (phpbb_forums f, phpbb_topics t) WHERE t.topic_id = 5384 AND (f.forum_id = t.fo |
| 190613 | mfora7d | localhost | mfora7d | Query   |  153 | Locked               | UPDATE phpbb_users
                        SET user_lastvisit = 1277295048
                        WHERE user_id = 39801                 |
| 190614 | mfora7d | localhost | mfora7d | Query   |  153 | Locked               | SELECT u.*, s.*
                FROM phpbb_sessions s, phpbb_users u
                WHERE s.session_id = '81da39bf2483a2422 |
| 190615 | mfora7d | localhost | mfora7d | Query   |  152 | Locked               | SELECT u.*, s.*
                FROM phpbb_sessions s, phpbb_users u
                WHERE s.session_id = '6aa8fec108b46fdde |
| 190616 | mfora7d | localhost | mfora7d | Query   |  151 | Locked               | SELECT u.*, s.*
                FROM phpbb_sessions s, phpbb_users u
                WHERE s.session_id = '3072e03e688308a4d |
| 190617 | mfora7d | localhost | mfora7d | Query   |  151 | Locked               | SELECT u.*, s.*
                FROM phpbb_sessions s, phpbb_users u
                WHERE s.session_id = 'f23d89c54b8952f74 |
| 190618 | mfora7d | localhost | mfora7d | Query   |  147 | Locked               | SELECT u.*, s.*
                    FROM phpbb_users u
                    LEFT JOIN phpbb_sessions s ON (s.session_user_id = u.us |
| 190619 | mfora7d | localhost | mfora7d | Query   |  144 | Locked               | SELECT u.*, s.*
                FROM phpbb_sessions s, phpbb_users u
                WHERE s.session_id = 'a3b24deec1b3d87aa |
| 190620 | root    | localhost | NULL    | Query   |    0 | NULL                 | show processlist                                                                                     |
+--------+---------+-----------+---------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+
-bash-3.1#


После отвисания
mysql -e "show processlist"
+--------+---------+-----------+---------+---------+------+-------+------------------+
| Id     | User    | Host      | db      | Command | Time | State | Info             |
+--------+---------+-----------+---------+---------+------+-------+------------------+
| 191238 | mfora7d | localhost | mfora7d | Sleep   |    3 |       | NULL             |
| 191242 | mfora7d | localhost | mfora7d | Sleep   |    2 |       | NULL             |
| 191249 | mfora7d | localhost | mfora7d | Sleep   |    1 |       | NULL             |
| 191251 | root    | localhost | NULL    | Query   |    0 | NULL  | show processlist |
+--------+---------+-----------+---------+---------+------+-------+------------------+

Отредактированно Jabali (23.06.2010 16:15:33)

Неактивен

 

#18 23.06.2010 16:25:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

| 190598 | mfora7d | localhost | mfora7d | Query   |  166 | Copying to tmp table | SELECT f.*, t.*, p.*, u.* FROM (phpbb_posts p, phpbb_users u, phpbb_topics t) LEFT JOIN phpbb_forums |

Собственно, вот он — обидчик. 166 секунд выбирает данные из табличек.
Нужно оптимизировать запрос smile

Да, InnoDB в данном случае спасет, но запрос все равно лучше соптими-
зировать, т.к. он не очень хороший (полный запрос можно посмотреть
через SHOW FULL PROCESSLIST).

Неактивен

 

#19 23.06.2010 16:44:41

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

Спасибо! Предеам это PHPБэБистам - пока буду думать как перевсти phpBB из MyISAM в InnoDB елси они уже не там...

Неактивен

 

#20 23.06.2010 16:47:22

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

mysql -NBe "show tables" mfora7d | xargs -i@ mysql -e "alter table @ engine=innodb" mfora7d

Но только сначала включите движок и выдайте ему памяти smile

Неактивен

 

#21 23.06.2010 17:09:45

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

Innodb есть
| Engine     | Support  | Comment                                                        |
+------------+----------+----------------------------------------------------------------+
| MyISAM     | DEFAULT  | Default engine as of MySQL 3.23 with great performance         |
| MEMORY     | YES      | Hash based, stored in memory, useful for temporary tables      |
| InnoDB     | YES      | Supports transactions, row-level locking, and foreign keys     |
| BerkeleyDB | DISABLED | Supports transactions and page-level locking                   |
| BLACKHOLE  | NO       | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE    | NO       | Example storage engine                                         |
| ARCHIVE    | NO       | Archive storage engine                                         |
| CSV        | NO       | CSV storage engine                                             |
| ndbcluster | NO       | Clustered, fault-tolerant, memory-based tables                 |
| FEDERATED  | NO       | Federated MySQL storage engine                                 |
| MRG_MYISAM | YES      | Collection of identical MyISAM tables                          |
| ISAM       | NO       | Obsolete storage engine 

но когда ему в my.cnf что то прописываю он не загружает mysql превышено время ожидания

#skip-innodb
skip-bdb

innodb_buffer_poll_size=256M
innodb_additional_mem_pool_size=20M
innodb_log_file_size=12M
innodb_log_buffer_size=4
innodb_thread_concurrency=8

Отредактированно Jabali (23.06.2010 17:11:58)

Неактивен

 

#22 23.06.2010 17:23:10

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

загрузил с дефолтными my innodn 4g только там местами где было много уменньшил в два раза

Неактивен

 

#23 23.06.2010 17:51:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

Даже боюсь себе предположить, что будет делать InnoDB с буфером лога
в 4 байта... удивлен, что он вообще запускается smile

innodb_flush_log_at_trx_commit = 0 еще поставьте. А буфер лога — ну хотя
бы 8 мегабайт нужно smile

Неактивен

 

#24 24.06.2010 12:39:09

Jabali
Завсегдатай
Зарегистрирован: 21.06.2010
Сообщений: 42

Re: Зависает MySQL подскажите настройки? :@(

После коорденального изменений my.cnf на слегка измененный дефолтный (я в шоке кей буфер всего 32 м и работает :@))) а бывало по 1GB) жду зависания... понять что теперь работает innodb трудно но я никакх ддоп строк не запускал в настройках он включен

У меня еще такой философский вопрос какой параметр может влиять на скорость дополнения поста в форум после наджатия кнопки отправить?

Неактивен

 

#25 24.06.2010 14:50:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Зависает MySQL подскажите настройки? :@(

Много разных. InnoDB это тоже починит (не будете ждать завершения вот того
длинного SELECT).

Неактивен

 

Board footer

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