|
|
|
Ошибка #HY000Lock wait timeout exceeded
|
|||
|---|---|---|---|
|
#18+
Локальная база данных на POS-терминале, версия MySQL MariaDB 5.2.14. Сегодня на 3-х POS-терминалах в разное время выскочила ошибка #HY000Lock wait timeout exceeded, и также внезапно исчезла. Таблицы, при модификации которых возникла ошибка, продолжали использоваться и после ее возникновения. Ошибка совместного доступа исключена - по логике приложения эти таблицы используются только локально, какой-то несанкционированный доступ извне очень маловероятен. Все, что удалось выудить из системного лога: 160509 14:20:36 [Note] C:\MariaDB 5.2\bin\mysqld.exe: Normal shutdown 160509 14:20:36 [Note] Event Scheduler: Purging the queue. 0 events 160509 14:20:39 [Warning] C:\MariaDB 5.2\bin\mysqld.exe: Forcing close of thread 54784 user: 'root' InnoDB: The InnoDB memory heap is disabled InnoDB: Mutexes and rw_locks use InnoDB's own implementation InnoDB: Compressed tables use zlib 1.2.3 InnoDB: Windows native async i/o is disabled as default. InnoDB: It is not applicable for the current multi io threads implementation. 160509 14:22:55 InnoDB: Initializing buffer pool, size = 126.0M 160509 14:22:55 InnoDB: Completed initialization of buffer pool 160509 14:22:56 InnoDB: highest supported file format is Barracuda. InnoDB: Log scan progressed past the checkpoint lsn 948294740 160509 14:22:56 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 953537536 InnoDB: Doing recovery: scanned up to log sequence number 958282415 InnoDB: 1 transaction(s) which must be rolled back or cleaned up InnoDB: in total 661218 row operations to undo InnoDB: Trx id counter is D8700 160509 14:23:13 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed InnoDB: Starting in background the rollback of uncommitted transactions 160509 14:23:23 InnoDB: Rolling back trx with id D835C, 661218 rows to undo InnoDB: Progress in percents: 1160509 14:23:23 Percona XtraDB ( http://www.percona.com) 1.0.17-14.1 started; log sequence number 958282415 160509 14:23:23 [Note] Plugin 'FEEDBACK' is disabled. 2160509 14:23:27 [Note] Event Scheduler: Loaded 0 events 160509 14:23:27 [Note] C:\MariaDB 5.2\bin\mysqld.exe: ready for connections. Version: '5.2.14-MariaDB' socket: '' port: 3306 mariadb.org binary distribution 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 InnoDB: Rolling back of trx id D835C completed 160509 14:27:46 InnoDB: Rollback of non-prepared transactions completed 160509 15:00:03 [Note] C:\MariaDB 5.2\bin\mysqld.exe: Normal shutdown 160509 15:00:03 [Note] Event Scheduler: Purging the queue. 0 events 160509 15:00:03 InnoDB: Starting shutdown... 160509 15:00:04 InnoDB: Shutdown completed; log sequence number 1200190205 160509 15:00:04 [Note] C:\MariaDB 5.2\bin\mysqld.exe: Shutdown complete InnoDB: The InnoDB memory heap is disabled InnoDB: Mutexes and rw_locks use InnoDB's own implementation InnoDB: Compressed tables use zlib 1.2.3 InnoDB: Windows native async i/o is disabled as default. Что этому предшествовало: 5 дней назад в порядке эксперимента перевел несколько таблиц, которые работают как временные, в MyISAM, но затем отказался от этой затеи и вернул все в INNODB. Модификации делал через Drop table / Create table. Попутно добавил в my.ini строки: key_buffer_size = 32M sort_buffer_size = 1M т.к. эти параметры, как я понял, используются именно для MyISAM ( http://www.hostcms.ru/documentation/server/mysql/), а памяти на терминалах не густо (где 1Г, где и вовсе 512М). После этого все 5 дней до сегодняшнего никаких модификаций ни со структурой базы, ни с параметрами MySQL, не производилось, и никаких проблем не было. Ошибка возникала при записи как раз в одну из тех таблиц, с которыми проводились эксперименты. Может ли это быть связано с изменением размеров буферов, либо с некорректным пересозданием таблиц, или же причина в другом? 5 дней нормальной работы дают повод в этом усомниться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 16:00 |
|
||
|
Ошибка #HY000Lock wait timeout exceeded
|
|||
|---|---|---|---|
|
#18+
A-MaR14:22:56 InnoDB: Database was not shut down normally!Меня бы в первую очередь напрягли эти строчки. По какой причине произошел аварийный останов MySQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 16:37 |
|
||
|
Ошибка #HY000Lock wait timeout exceeded
|
|||
|---|---|---|---|
|
#18+
miksoftA-MaR14:22:56 InnoDB: Database was not shut down normally!Меня бы в первую очередь напрягли эти строчки. По какой причине произошел аварийный останов MySQL? Здесь просто перезагрузили POS кнопкой reset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 16:58 |
|
||
|
Ошибка #HY000Lock wait timeout exceeded
|
|||
|---|---|---|---|
|
#18+
Так-с, интересно... по ссылке ( http://www.hostcms.ru/documentation/server/mysql/ , которая в стартовом сообщении скопировалась неправильно), именно параметр sort_buffer_size упоминается в разделе "Оптимизация MySQL для MyISAM", но нет ни слова о параметре myisam_sort_buffer_size. Тогда как по другим ссылкам в первую очередь говорится как раз о myisam_sort_buffer_size. Выходит, sort_buffer_size - это более глобальный параметр, влияющий не только на MyISAM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 17:13 |
|
||
|
Ошибка #HY000Lock wait timeout exceeded
|
|||
|---|---|---|---|
|
#18+
A-MaR, Читайте оригинальную документацию, а не мутные пересказы. http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_myisam_sort_buffer_size The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE or when creating indexes with CREATE INDEX or ALTER TABLE. http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_sort_buffer_size Each session that must perform a sort allocates a buffer of this size. sort_buffer_size is not specific to any storage engine and applies in a general manner for optimization. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 17:46 |
|
||
|
Ошибка #HY000Lock wait timeout exceeded
|
|||
|---|---|---|---|
|
#18+
"Виновник" найден. Кто-то решил в самые пиковые часы подгрузить на кассы большой файл с товарами порядка 150 тыс. записей. А служба обмена работает таким образом, что вначале импортирует этот файл как есть, без каких-либо проверок, в промежуточную таблицу, а затем заталкивается в базу одной транзакцией конструкцией вида select count(function_import(TI.ID_TempItem)) from TempItems TI. За полгода использования таким способом случалось грузить объемы и поболее, работает очень быстро и проблем ни разу не доставляло, но вот то, что прогрузку решат делать в пиковые часы, я как-то не предполагал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2016, 04:37 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=102&tid=1831820]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
90ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 405ms |

| 0 / 0 |
