MySQL 开发应用时的超时问题

 现在公司开发一个服务端程序,使用mysql作为服务器。我使用的是MySQL-devel包进行C语言开发。发现服务器运行一段时间后,对数据库的访问就失效了。后来查了一下,是由于对mysql数据库的应用停顿了一段时间以后,连接会自动中断掉。有两种解决方案:

1,修改参数法

仔细试验,会发现这主要与参数interactive_timeout有关,它缺省值28800, 合计,好像是8个小时

其实,我们在应用里边,可以在获取连接以后,加大这个值,使应用不会自动中断的连接。

mysql> show variables like '%time%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| connect_timeout | 5 |
| datetime_format | %Y-%m-%d %H:%i:%s |
| delayed_insert_timeout | 300 |
| flush_time | 1800 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| long_query_time | 10 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| slow_launch_time | 2 |
| sync_replication_timeout | 10 |
| system_time_zone | |
| time_format | %H:%i:%s |
| time_zone | SYSTEM |
| timed_mutexes | OFF |
| wait_timeout | 28800 |
+--------------------------+-------------------+

mysql> set interactive_timeout=1073741824;
Query OK, 0 rows affected (0.06 sec)

mysql> show variables like 'intera%timeout';
+---------------------+----------+
| Variable_name | Value |
+---------------------+----------+
| interactive_timeout | 31536000 |
+---------------------+----------+
1 row in set (0.02 sec)

mysql> show variables like '%timeout%';
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| sync_replication_timeout | 10 |
| wait_timeout | 28800 |
+--------------------------+----------+
9 rows in set (0.00 sec) Www.Svn8.Com

如果不放心,可以将wait_timeout也改大。

至于在C应用里怎么执行,直接执行SQL语句:

set interactive_timeout=1073741824

即可。


建议将这两个文件设置成大小一致的两个数字。这里数字的单位默认为秒。通常情况下mysql在这两个参数上缺省是8小时。如果8小时内没有新的连接,则mysql会中断连接

更改后重新启动数据库

2,保持连接法

 要想永不中断,比较理想的方法,是自己实现一个连接池,每隔一个周期(比如10分钟),主动查询一次数据库,这样,这个连接永远是活动的。


本文来自Svn中文网[www.svn8.com]转发请保留本站地址:http://www.svn8.com/mysql/200903043040.html

猜你喜欢

转载自blog.csdn.net/wingsing2010/article/details/6042980
今日推荐