问题

数据库总是访问不了以致不得不反反复复的重启MySQL数据库。

但是重启的效果并不明显,重启10几分钟后问题依然出现。导致前端用户难以正常访问网站。
另外他们还通过google,百度搜索,怀疑是数据库连接设置太少。设定加大并发连接,无效。flush host,无效。经过详细了解情况后,得出如下信息:

一、系统正常;
二、MySQL本身服务正常(可以在本地用phpmyadmin操作,速度很快);
三、另外一台服务器的WEB端访问MySQL很慢,甚至无法访问;
四、网络拓扑:WEB、数据库分离,并且在不同机房;

排查

根据他反映的情况,开始就怀疑与防火墙有关。因为这个问题,我遇到过,有切身体会。
但是我仍然按照常规步骤,逐一排查故障。这里可以排除网络缘故,网络方面的可能性已经排除。
另外,由于涉及数据私隐,这里仅仅描述排查步骤及排查命令,不提供具体数据和命令执行结果。

检查磁盘空间

# df -h
查看进程状况 # pstree
查看网络连接 # netstat -an
查看系统日志 # tail -f /var/log/messages
查看MySQL日志 # cat xxx.err |less
查看系统设置 # ulimit
# cat /proc/sys/net/ipv4/ip_local_port_range
# cat /proc/sys/net/ipv4/ip_conntrack_max

经过这几个步骤的检查下来,大致可以确定问题所在。因为前面的排查,并没有发现异常的地方。而系统设置确是RedHat AS 4的默认值。而这些默认值,对于比较大的服务来说,是不能满足的。因此,再结合问题的症状,可以断定问题就在于系统设置上。

处理

经过上面的排查后,已经断定为系统设置上的问题。因此通过修改这三个设置,来观测效果。

# ulimit -HSn
# echo > /proc/sys/net/ipv4/ip_local_port_range
# echo '' > /proc/sys/net/ipv4/ip_conntrack_max

这些设置,已经在很多生产环境里应用,因此可以放心使用。

解决

应用了上面的三个设置后,经过一个多小时,问题不再出现。由此更可以断定,问题就是系统默认设置导致问题。
为了使得下次重启服务器后,这些设置仍然有效。通过修改 /etc/rc.local 来实现。

# vi /etc/rc.local
#增加如下三行代码
ulimit -HSn
echo > /proc/sys/net/ipv4/ip_local_port_range
echo '' > /proc/sys/net/ipv4/ip_conntrack_max

在第二天,问题已经彻底解决,运行了一天多,没有再出现问题。

总结

这些放行版操作系统,都是通用性的。为了满足通用,会不同程度的牺牲系统的性能。因此,作为系统管理员,一个很重要的工作,就是根据自己不同的业务,不同的应用,对系统进行优化。

原文:http://www.lvtao.net/database/643.html

防火墙导致MySQL无法访问的问题解决案例的更多相关文章

  1. MySQL SYS CPU高的案例分析(一)

    原文:MySQL SYS CPU高的案例分析(一) [现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. ...

  2. Can't connect to local MySQL server through socket 问题解决

    Fedora8启动mysql 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/m ...

  3. 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

    阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...

  4. mysql远程访问1045的问题解决

    mysql远程访问1045的问题解决 首先进入mysql数据库,然后输入下面两个命令 grant all privileges on *.* to 'root'@'%' identified by ' ...

  5. MySQL 独立表空间恢复案例

    创建表的时候就会得到元数据.可以通过定义的方式对表的元数据进行生成 这个地方要注意的是 独立表空间当中   ibd & frm分别存储的是什么数据? 表空间:文件系统,为了更好的扩容数据库的存 ...

  6. MySQL CPU %sys 高的案例分析(三)

    [现象] 最近有台服务器晚上CPU告警,系统抓取的故障期间的snapshot显示CPU %sys较高,同时context switch在300K以上. 是否过高的context switch引起的%s ...

  7. mysql数据安全一之数据恢复案例

    mysql数据安全一之数据恢复案例 --chenjianwen 应用场景:适宜开启binlog 日志功能,定时备份并使用--master-data参数备份,在某个时间点丢失数据,用于数据恢复 开篇总结 ...

  8. 《PHP实用问题解决案例》系列分享专栏

    <PHP实用问题解决案例>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201725.html 文章 PHP汉字拼音转换和公历农历 ...

  9. FAQ | 是什么导致MySQL数据库服务器磁盘I/O高(本文章来自知数堂)

    FAQ | 是什么导致MySQL数据库服务器磁盘I/O高 2016-12-26 叶金荣 老叶茶馆 0.导读 有个MySQL服务器的磁盘I/O总有过高报警,怎么回事? 本文约1500字,阅读时间约10分 ...

随机推荐

  1. iOS设备的标识---UUID和IDFA

    一:1.1 :UDID 简介:UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成.在很多需要限制一台设备一个账 ...

  2. 【php】基础学习1

    其中包括php基础.字符串和正则表达式的学习.具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta h ...

  3. Leetcode 二分查找 Search Insert Position

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Search Insert Position Total Accepted: 14279 T ...

  4. 实战:MySQL Sending data导致查询很慢的问题详细分析(转)

    这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有代表性,分享给大家作为新年礼物:) [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的 ...

  5. Server Process

    1.client进行update操作后.其它是怎么协作的? Client进行update操作之后,是由Server Process真正完毕的,分以下几步: 1).须要更新的数据在Data buffer ...

  6. [Jobdu] 题目1529:棋盘寻宝

    题目描述: 现在有一个8*8的棋盘,上面放着64个价值不等的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于1000),一个人的初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应 ...

  7. Ambari-stack介绍

    Ambari-stack总体介绍 Ambari-stack 表示hadoop某个发行版本号.比如HDP-1.0.0,在用ambari创建一个集群时,首先要通过调用restfulAPI设置stack版本 ...

  8. linux下添加用户到sudo组

    #查看当前用户所属组groups #查看指定用户hiuser所属组groups hiuser #添加用户hiuser到sudo组sudo usermod -G sudo hiuser

  9. Django:Django Rest Framework

    Django Rest Framework   一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称 ...

  10. python学习之__new__()

    这里我从str类的__new__()方法来说明. str的__new__(cls,*args)必须传入一个参数cls,他是str的子类(注意不是实例). __new__()的返回值是该子类的实例,表现 ...