MySQL: check timeouts on database
SHOW VARIABLES LIKE 'wait_timeout';
-- Timeout for interactive connections
SHOW VARIABLES LIKE 'interactive_timeout';
-- Timeout for initial connection attempts
SHOW VARIABLES LIKE 'connect_timeout';
SHOW VARIABLES LIKE '%timeout%';
| connect_timeout | 60 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1.000000 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| replica_net_timeout | 30 |
| rpl_stop_replica_timeout | 31536000 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 30 |
| ssl_session_cache_timeout | 300 |
| thread_pool_idle_timeout | 60 |
| wait_timeout | 28800 |
The most common timeout-related variables are:
wait_timeout– Timeout for non-interactive connections (in seconds).interactive_timeout– Timeout for interactive sessions (e.g., MySQL CLI).connect_timeout– Timeout for initial connection attempts.net_read_timeout– Timeout for reading from the network.net_write_timeout– Timeout for writing to the network.
mysql -u root -p -e "SHOW VARIABLES LIKE '%timeout%';"
For lock-related timeouts, such as Lock wait timeout exceeded, you can identify blocking queries using:
SELECT r.trx_id AS waiting_trx_id, r.trx_query AS waiting_query,
b.trx_id AS blocking_trx_id, b.trx_query AS blocking_query
FROM performance_schema.data_lock_waits w
JOIN information_schema.innodb_trx b
ON b.trx_id = w.blocking_engine_transaction_id
JOIN information_schema.innodb_trx r
ON r.trx_id = w.requesting_engine_transaction_id;
SHOW SESSION VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
If you need to adjust timeouts temporarily for troubleshooting:
SET SESSION wait_timeout = 3600;
SET GLOBAL connect_timeout = 60;
Remember that global changes reset after a server restart unless updated in my.cnf or my.ini.
Comments
Post a Comment