MySQL--数据库连接异常问题汇总

时间:2021-12-07 11:26:31

========================================================

Name or service not known

错误消息:

[Warning] IP address 'xxx.xxx.xx.xxx' could not be resolved: Name or service not known

错误原因:

MySQL数据库服务器上没有配置/ect/hosts,也没有DNS服务,导致MySQL服务线程解析IP对应的主机名时发生失败。

解决办法:

使用参数--skip-name-resolve来禁用DNS的主机名解析功能,禁用该功能后,在MySQL授权表里面,只能使用IP地址。
配置my.cnf中参数为:
skip_host_cache
skip-name-resolve=1

========================================================

Aborted Connections类错误

错误消息:

[Note] Aborted connection 854 to db: 'employees' user: 'josh'

客户端无法正常连接MySQL数据库,主要原因:
1、用户账号不正确
2、用户权限不足
3、连接包存在问题(网络丢包等问题)
4、建立连接时间超过 connect_timeout 参数的阀值

========================================================

Aborted_clients类错误

错误原因:

客户端成功连接MySQL数据库但非正常断开或者异常中止,主要原因有:
1、客户端应用关闭前没有正常调用mysql close()方法
2、客户端建立连接后长时间未向MySQL发出请求,休眠时间超过 wait_timeout 或 interactive_timeout 两个参数
3、客户端在数据传输过程中非正常关闭。

========================================================

No operations allowed after connection closed

异常信息:

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

异常原因:

应用服务器连接数据库服务器后,长时间未使用而导致连接空闲时间超过数据库配置“wait_timeout”的阈值,MySQL自动将这些连接断开,但应用服务器并不知晓该连接失效,再次使用这些连接时就可以报错。

解决办法:

1、增到MySQL参数“wait_timeout”的值
2、减少 Connection pools 中 connection 的 lifetime
3、应用服务器定期检查连接池中各连接的有效性。

========================================================

Cannot assign requested address

问题描述:

使用python+MySQLdb来收集几百个MySQL数据库节点的数据库信息,每个MySQL数据库节点进行1000+次的数据库查询,并将查询结果插入的本地数据库中上(数据库服务器与程序运行在同一服务器中),同样造成1000+的数据库插入,在程序运行中,不定期出现连接失败的异常,异常信息为:
2003,Can’t connect to MySQL server on ‘XXX.XXX.XXX.XXX′(99)

错误代码99含义为:
OS error code 99: Cannot assign requested address
表示无法分配本地地址资源,socket无法创建。

在Linux级别使用命令 netstat -anp |grep TIME_WAIT 可以发现有大量的TIME_WAIT,超过1W+的等待:

问题原因:

在程序运行过程中,运行程序的服务器与其他MySQL数据库服务器频繁建立连接并执行MySQL命令,当MySQL命令执行完成后,TCP连接被关闭后处于TIME_WAIT状态,TCP连接未被及时释放而导致TCP连接端口占满不可用。

解决办法:

配置TCP连接可以重用和快速回收,在文件/etc/sysctl.conf中加入以下代码:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

然后使用/sbin/sysctl -p 命令使配置文件生效。

配置完成后,在程序运行时仍存在大量(超过1W+)处于TIME_WAIT状态的TCP连接,但未再出现连接失败的情况。

相关知识:

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

MySQL--数据库连接异常问题汇总的更多相关文章

  1. mysql数据库连接异常问题(总结)

    mysql数据库连接异常问题(总结) 1.1 前言   最近项目由1个数据源增加至了3个数据源(连接池使用C3P0),结果各种奇葩的数据库连接问题接踵而至,为防止将来再次遇到同样的问题不犯同样错误,现 ...

  2. 【MySql】数据库连接异常:Thelastpacketsentsuccessfullytotheserverwas0millisecondsago

    参考链接:http://blog.sina.com.cn/s/blog_7540bf5f0102xjpk.html 最近新入职,用了新版的mysql8数据库,结果连接数据库时出现了问题,报了几个异常, ...

  3. 查找Mysql数据库连接jar包和对应的Driver和Url

    以前写jdbc连接向来都是直接copy,对于连接数据库的jar包在哪下载,对应的Driver类是哪一个,数据库连接串怎么找等等都没有做过,今天从零开始整了一遍. 使用的数据库是Mysql 一.已安装了 ...

  4. Python3 MySQL 数据库连接 -PyMySQL

    Python 3  操作mysql http://www.runoob.com/python3/python3-mysql.html Python3 MySQL 数据库连接 本文我们为大家介绍 Pyt ...

  5. mysql主主复制汇总整理

    mysql主主复制汇总整理 一.Mysql主主.主从复制主要思路: 1.mysql复制实质: 就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍,因此非常重要的一点是mysq ...

  6. tcp_tw_recycle参数引发的数据库连接异常

    [问题描述] 开发反馈有个应用在后端数据库某次计划性重启后经常会出现数据库连接异常问题,通过监控系统的埋点数据,发现应用连接数据库异常有两类表现:   其一:连接超时   131148.00ms To ...

  7. TR2021_0000偶发数据库连接异常问题排查

    [问题描述] 数据库连接异常是很难排查的一类问题.因为它牵涉到应用端,网络层和服务器端.任何一个组件异常,都会导致数据库连接失败.开发遇到数据库连接不上的问题,都会第一时间找DBA来协助查看,DBA除 ...

  8. 一个简单的MySql数据库连接池的实现

    package cn.hc.connectionPool; import java.io.IOException; import java.io.InputStream; import java.sq ...

  9. 报表开发工具中mysql数据库连接编码转化失效解决方案

    1. 问题描述 在报表开发工具FineReport中,mysql数据库连接通过数据连接编码转换进行编码的转换,在通过报表录入往数据库中录入中文数据的时候,总是出现乱码,这个该怎么解决呢? 2. 解决方 ...

  10. Mysql数据库连接、查询、记录集操作代码

    Mysql数据库链接代码 function dbConnect($hostname,$username,$pass,$db_name,$pconnect =0) { $func=empty($pcon ...

随机推荐

  1. php生成唯一随机码

    最终使用: echo md5(time() . mt_rand(1,1000000)) //A:利用时间戳的方法 md5("admin"); // B:32位MD5加密 subst ...

  2. SE78、SWM0

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. EXCEL 数字+E+数字 自动识别为指数形式的解决办法

    1.今天从数据库导出excel表时,出现本来为"2E3"的单元格错误显示为"2.00E+03"的情况 2.而设置 单元格格式 为"文本"后, ...

  4. CSS:CSS定位和浮动

    CSS2.1规定了3种定位方案 1.Normal flow:普通流(相对定位 position relative.静态定位 position static) 普通流(normal flow,国内有人翻 ...

  5. SequoiaDB 与 Hive 集成

    SequoiaDB与Hadoop部署 SequoiaDB与Hadoop在物理上部署方案如下图所示,部署建议如下: l  SequoiaDB与Hadoop部署在相同的物理设备上,以减少Hadoop与Se ...

  6. AssetManager asset的使用

    Android 系统为每个新设计的程序提供了/assets目录,这个目录保存的文件可以打包在程序里./res 和/assets的不同点是,android不为/assets下的文件生成ID.如果使用/a ...

  7. uc/os任务创建

    问题描述:      uc/os中任务创建 问题解决: 创建一个任务,任务从无到有.任务创建函数分两种, 一种是基本的创建函数OSTaskCreate, 另一种是扩展的任务创建函数OSTaskCrea ...

  8. ubuntu下hadoop完全分布式部署

    三台机器分别命名为: hadoop-master ip:192.168.0.25 hadoop-slave1 ip:192.168.0.26 hadoop-slave2 ip:192.168.0.27 ...

  9. MyEclipse8.5整合Git

    下载Eclipse的git插件--EGit.官网地址: 点击打开链接 截止目前最新版本为3.5,历史版本如下: Release Version Release Date p2 repository U ...

  10. Hibernate---第一个helloworld程序 (XML版本, annotation版本)

    Hibernate作为JPA的一种实现,jpa的注解已经是hibernate的核心,hibernate只提供了一些补充,而不是两套注解.hibernate对jpa的支持够足量,在使用hibernate ...