`
zhouhaijian
  • 浏览: 3939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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,系统已经稳定下来了。

 

 

 

1
0
分享到:
评论

相关推荐

    mysql提示got timeout reading communication packets的解决方法

    mysql&gt;show gloable variables like “%timeout%”; 进行查看 interactive_timeout 的黓认值为28800 wait_timeout 的默认值这:120 根据情况增加吧. 这两个值是一个全局变量,可以动态增加,如: mysql&gt; set ...

    MySQL wait_timeout连接超时

    MySQL的`wait_timeout`连接超时问题通常出现在长时间无操作的数据库连接上,服务器会自动关闭这些连接以释放资源。这种现象在应用中可能导致突然的数据通信中断,表现为“Communications link failure”等错误,提示...

    EF连接MySql 5.7存在的坑

    使用Entity Framework 6.1.X连接MySQL5.7存在的几个问题的解决办法. 1.选择EF版本,弹出Your project references the latest version of EF;however,an EF database provider compatible with this version could ...

    MySQL中interactive_timeout和wait_timeout的区别

    在MySQL中,`interactive_timeout` 和 `wait_timeout` 是两个重要的配置参数,它们与客户端连接到服务器的超时设置紧密相关。理解这两个参数的区别对于优化数据库性能和避免不必要的连接断开至关重要。 `...

    解决mysql出现大量TIME_WAIT

    - `net.ipv4.tcp_fin_timeout=30`:缩短TIME_WAIT状态的持续时间,单位为秒。 2. **使配置生效**:执行`sysctl -p`命令,使修改后的参数立即生效。 ### 三、优化MySQL配置 除了系统层面的优化,对MySQL数据库...

    关于MySQL的wait-timeout连接超时问题报错解决方案.pdf

    2. 查看 wait_timeout 参数的值:可以通过 SHOW GLOBAL VARIABLES 命令来查看 wait_timeout 参数的值,例如:mysql&gt; show global variables like 'wait_timeout'; 这将显示当前的 wait_timeout 值。 3. 避免使用 ...

    MySQL和连接相关的timeout 的详细整理

    6. `connect_timeout`: 这个参数定义了MySQL服务器在等待客户端完成连接握手过程的最长时间。如果超过这个时间,服务器将发送“Bad handshake”错误并关闭连接。默认值为10秒,防止因网络延迟或客户端问题导致的无尽...

    关于MySQL的wait-timeout连接超时问题报错解决方案.docx

    在 MySQL 中,wait_timeout 参数是控制连接超时的关键参数。当该参数设置的太大时,可能会导致 MySQL 中大量的 SLEEP 进程无法及时释放,拖累系统性能。然而,如果将其设置的太小,可能会遭遇到“MySQL has gone ...

    MySQL slave_net_timeout参数解决的一个集群问题案例

    MySQL的`slave_net_timeout`参数在数据库集群环境中扮演着重要的角色,它关乎主从复制的稳定性和效率。本文将深入探讨这个参数,并基于一个实际案例解释如何利用它来解决集群问题。 在升级一套数据库集群从MySQL ...

    MySQL数据库连接超时(Wait_timeout)问题总结.pdf

    MySQL数据库的连接超时问题,通常表现为Wait_timeout错误,指的是当客户端与服务器之间的连接在指定时间内没有进行任何数据交互,数据库会自动断开这个连接,以释放资源并防止不必要的资源占用。这一特性在MySQL中是...

    解决SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded_runtimeerror怎么修复

    在MySQL数据库操作中,"SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded" 是一个常见的错误,它意味着在执行事务时,系统等待锁定资源的时间超过了预设的限制。这个错误通常发生在并发环境中,当...

    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    wait_timeout =86400 相关参数,红色部分 mysql&gt; show variables like ‘%timeout%’; +————————–+——-+ | Variable_name | Value | +————————–+——-+ | connect_timeout | 5 | | delayed_i

    timeout.zip

    在IT行业中,"timeout"是一个常见的概念,尤其在编程、网络请求和系统设计等领域。"timeout.zip"这个文件名可能暗示着一个与超时错误相关的压缩包,它可能包含一些日志、源代码、测试数据或者解决问题的文档。下面...

    SQL查询超时的设置方法(关于timeout的处理)

    本文主要探讨了如何调整MySQL的超时设置,以适应OceanBase的query timeout需求。首先,我们通过`show variables like '%time%'`命令来查看MySQL当前的超时相关变量。 1. `connect_timeout`:此参数定义了MySQL...

    还原大备份mysql文件失败的解决方法分享

    3. **show variables like ‘%timeout%’** 和 **show variables like ‘%packet%’**: 这两条命令用于查看当前MySQL服务器的这些参数值,帮助诊断问题或确认调整是否生效。 在服务器环境中,调整这些参数后,务必...

    MySQL性能优化之参数配置.docx

    wait_timeout 参数控制着 MySQL 客户端的数据库连接闲置最大时间值。默认的 wait_timeout 值为 8 小时,这个值太大,可能会导致连接数爆炸。通过修改 wait_timeout 值为 30 分钟,可以减少连接数的爆炸风险。 修改 ...

Global site tag (gtag.js) - Google Analytics