• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

解决使用MySQL C-API开发应用时的连接超时有关问题

mysql 搞代码 7年前 (2018-06-04) 95次浏览 已收录 0个评论

解决使用mysql C-API开发应用时的连接超时问题

大概初用C-API进行MySQL应用开发的人,都会遇到这种问题,就是当应用停顿了一段时间以后,连接会自动中断掉。

 

仔细试验,会发现这主要与参数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)

 

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

 

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

set interactive_timeout=1073741824

即可。

 

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

 


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:解决使用MySQL C-API开发应用时的连接超时有关问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址