问题

数据库总是访问不了以致不得不反反复复的重启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. vscode自定义背景颜色

    vscode自定义背景颜色   大概做前端的builder(只会打代码的才是coder,嘻嘻~)一半以上都会使用vscode编辑代码吧,vscode很轻量,支持的文件拖拽加入编辑区功能我个人认为很方便 ...

  2. 仿&lt;赶集生活&gt;client启动动画效果

    demo下载地址: http://yun.baidu.com/s/1i3wqEMh 由于前几年csdn泄露password的事件,导致我的账号被拿去发广告文章了,联系了管理员帮我把几篇广告文删掉,可是 ...

  3. java concurrent之ReentrantLock

    在编码的过程中.有时候我们不得不借助锁同步来保证线程安全.synchronizedkeyword在上一篇博客中已经介绍.自从JDK5開始,加入了还有一种锁机制:ReentrantLock. 二者的差别 ...

  4. React.Fragment 的作用:代替div作为外层

    https://segmentfault.com/a/1190000013220508 import React, { Fragment } from 'react'; <Fragment> ...

  5. ThreadLocal 类说明

    1 ThreadLocal 不是一个线程,而是保存线程本地化对象的容器.当运行于多线程环境的某个对象使用 ThreadLocal 维护变量时,ThreadLocal 为每一个使用该变量的线程分配一个独 ...

  6. 【Android】7.8 MyDemos项目的结构和主界面相关代码

    分类:C#.Android.VS2015: 创建日期:2016-02-17 一.简介 上一讲已经说过,系统升级为Win10后,重新创建了一个新的项目:MyDemos,并把前7章合并到了这个项目中,这次 ...

  7. Ribbon负载均衡策略与自定义配置

    Ribbon负载均衡策略 配置 对调用的某个服务启用某种负载策略 1)通过配置文件配置 hello: ribbon: NFLoadBalancerRuleClassName:com.netflix.l ...

  8. K-Means聚类算法的原理及实现【转】

    [转]http://www.aboutyun.com/thread-18178-1-1.html 问题导读:1.如何理解K-Means算法?2.如何寻找K值及初始质心?3.如何应用K-Means算法处 ...

  9. SharePoint自动化系列——通过PowerShell创建SharePoint Site Collection

    通过PowerShell创建SharePoint Site Collection,代码如下: Add-PSSnapin microsoft.sharepoint.powershell function ...

  10. 通过google浏览器的开发者工具修改cookie值

    打开一个页面F12,然后再刷新下.点到如下图位置刚可以添加或重设cookie的值.修改cookie的值时,需要注意要清除下cookie.不然修改的cookie不生效.