html tool

2013年1月18日星期五

tomcat-mysql 连接问题 (附解决没有/etc/my.cnf 和启动服务的问题)



  • Types: [java.lang.Integer, java.lang.Long, java.lang.Long]
    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 64,474,527 milliseconds ago.  The last packet sent successfully to the server was 64,474,527 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    更改此服务器设置解决以上问题
    • 参考:http://blog.csdn.net/zljjava/article/details/7996091
      unu lab:
      [lab ] add autoReconnect=true
      [popexizhi:16/1/13 测试,没有效果还是提示这个问题]
      -------------------------------------------------------------------------------------------------------------
      du lab:
      “interactive_timeout:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见wait_timeout
          wait_timeout:服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义),又见interactive_timeout
          如此看来,两个变量是共同控制的,那么都必须对他们进行修改了。继续深入这两个变量wait_timeout的取值范围是1-2147483(Windows),1-31536000(linux),interactive_time取值随wait_timeout变动,它们的默认值都是28800。
          MySQL的系统变量由配置文件控制,当配置文件中不配置时,系统使用默认值,这个28800就是默认值。要修改就只能在配置文件里修改。Windows下在%MySQL HOME%/bin下有mysql.ini配置文件,打开后在如下位置添加两个变量,赋值。

      [lab] 修改数据库设置吧
      mysql 安装没有my.cnf 文件
          参考:http://yangrenjun.iteye.com/blog/1426525
      MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL
      所以pope自己拷贝了一个 ,没有修改就放到了etc下测试一下

      要重启mysql时,发现连init.d中的应用都没有添加
         参考:http://www.xker.com/page/e2011/0217/100202.html
      “MySQL加入到系统服务里面 
      cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld ”
      自己添加了一下,顺便看了看mysql.server的内容,嘻嘻,参数也不多,回头可以好好看一下了。
      最后测试了一下,在my.cnf 中加入两个变量
      wait_timeout=388000
      interactive_time=388000
      在mysql中查询:show variables like '%timeout%';
      | wait_timeout               | 388000 |
      +----------------------------+--------+
      ok了,等明天早晨看效果了。:)
      [lab] 还是不可以,提示一样的,现在考虑是wait_timeout 和interactive_time的单位问题吗?是毫秒?go一下,修改 明天继续测试
      go 一下参见:http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html
      单位是seconds,这项目就是说这个项目对这个问题是没有效果的
      [popexizhi: 好奇怪的事,18/1/13,昨天就早晨重启了一下tomcat什么参数也没有修改,今天早晨这个问题自动没有了?那我昨天早晨看到的问题,是因为只修改数据库后重启db没有重启tomcat的原因吗?不知道,这个可以作为下一个lab的内容doing了。这个lab可以到此结束了,ok,好诡异的feel]
    [next]
    •  unu
      [doing] 总结上文学到的内容
      • unu: 没有/etc/my.cnf 和 mysqld的服务如何做
        MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL
        “MySQL加入到系统服务里面  cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld ”

        du:
        my.cnf 中添加设置内容,解决超时连接问题
        在my.cnf 中加入两个变量 (单位:秒)
        wait_timeout=388000
        interactive_time=388000
        在mysql中查询:show variables like '%timeout%';
        | wait_timeout               | 388000 |
        +----------------------------+--------+
      du
      [lab] 修改mysql的设置后重启mysql,不重启tomcat,重现问题
      tri
      [lab] try 修改应用连接中的

      autoReconnect=true

没有评论:

发表评论