发新话题
打印

mysql time out应用

mysql time out应用

前段时间一个项目中用到了mysql,可是在使用过程当中老是出现连接失败或者连接超时的错误,网上百度了一下,大不部分说这是mysql默认的超时时间8小时造成的,试着修改了一下,并没有从根本上解决这个问题,下面给出我的解决方案。
1.修改数据库默认的连接数目。set GLOBAL max_connections=200;
2.根据需要修改超时的时间设置。
查看mysql超时时间
mysql>show variables like '%timeout';

打印结果如下:
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+-------+

interactive_timeout 需在mysql_connect()设置CLIENT_INTERACTIVE选项后起作用,并被赋值为wait_timeout;


mysql>set global wait_timeout = 10; 对当前交互链接有效; (由于mysql的BUG所有这边必须加global)
mysql>set global interactive_timeout = 10; 对后续起的交互链接有效;

经过上面的修改之后,对已经启动的服务是没问题了。但是试验了一下,如果数据库重启之后,上面的更改就不起作用了。那有没有一劳永逸的解决办法呢?
答案当然是有的。进入mysql,找到mysqld文件的这一段:
${MYSQL}/bin/mysqld --user=mysql --datadir=${MYSQL}/data "$@" \
-O max_connections=500 -O wait_timeout=2592000 \
-O key_buffer=32M --port=${port} --default-character-set=utf8 --max_allowed_packet=256M --interactive_timeout=28800000 --interactive_timeout=28800000 --connect_timeout=90 --socket=/tmp/mysql.sock &

上面的这些配置可根据具体情况进行调试。
3.做了上面的更改之后,系统已经基本稳定,但是在大并发下依然时常出现连接上的错误。此时就应该考虑是连接池的问题啦。项目用到了c3p0,而且c3p0的声誉也比较高。下面给出我的配置:
<property name="testConnectionOnCheckin" value="true"></property>  
<property name="automaticTestTable" value="testc3p0"></property>  
<property name="idleConnectionTestPeriod" value="18000"></property>  
<property name="maxIdleTime" value="25000"></property>  
<property name="testConnectionOnCheckout" value="true"></property>  
<property name="autoCommitOnClose" value="true"></property>
<property name="initialPoolSize" value="2"></property>  
<property name="minPoolSize" value="2"></property>  
<property name="maxPoolSize" value="15"></property>  
<property name="acquireIncrement" value="10"></property>  
<property name="maxIdleTimeExcessConnections" value="20000"></property>

各个属性的意思我就不说了,网上一搜一堆。
可根据需要自行调整各个属性的时间。

经过上面的更改之后,ok,系统已经稳定下来了。

TOP

发新话题