2019独角兽企业重金招聘Python工程师标准>>>
下文描述了mysql的wait_timeout参数配置注意事项。简单的来讲要注意连接的程序用的是什么,是有状态的(如java,.net等)还是没状态的(如php,python等),有状态的wait_timeout连接时间要长(值范围60-259200),无状态的连接时间要短。mysql默认值是8小时。interactive_timeout(值范围10-86400)是用在shell交互时的超时时间。
其实很多性能优化的指导,都是如果无状态化。如缓存,静态化,轮循,分布式等,无状态很受欢迎。
Locate the timeout configuration and adjust it to fit your server.
wait_timeout = 28800
interactive_timeout = 28800
-
The interactive timeout does not affect any web application connections. A high
interactive_timeout
but a lowwait_timeout
is normal and is the best practice. -
Choose a reasonable
wait_timeout
value. Stateless PHP environments do well with a 60 second timeout or less. Stateful applications that use a connection pool (Java, .NET, etc.) will need to adjustwait_timeout
to match their connection pool settings. The default 8 hours (wait_timeout = 28800
) works well with properly configured connection pools. -
Configure the
wait_timeout
to be slightly longer than the application connection pool’s expected connection lifetime. This is a good safety check. -
Consider changing the
wait_timeout
value online. This does not require a MySQL restart, and thewait_timeout
can be adjusted in the running server without incurring downtime. You would issueset global wait_timeout=60
and any new sessions created would inherit this value. Be sure to preserve the setting inmy.cnf
. Any existing connections will need to hit the old value ofwait_timeout
if the application abandoned the connection. If you do have reporting jobs that will do longer local processing while in a transaction, you might consider having such jobs issueset session wait_timeout=3600
upon connecting.