MySQL数据库与应用分开部署之后性能劣化严重的定位思路

3,590 views

依据应用发起数据库访问操作的全过程,针对每个关联点,逐步排查。

  • 网络条件的差异
    • MySQL与应用同机部署时,是本地通信,通信效率较高;
    • MySQL与应用分开部署之后,相互之间基于TCP协议,进行远程通信,效率受网络影响;
    • 网络不稳定,如ping时延不稳定;
    • 防火墙配置的问题,导致链接经常被意外关闭,导致请求超时或者等不到数据;
  • 部署位置的差异,对网络通信存在影响
    • 与应用分别在不同的机房;
    • 与应用在相同的机房,但在不同的机架;
  • 硬件的差异
    • 网线的质量问题;
    • 网线接头的问题;
    • 主机的CPU位数不同,如原部署主机为64位,新部署环境主机为32位;
  • 操作系统的差异
    • 操作系统版本不同,如原部署位置的操作系统为Suse 11,新部署环境的操作系统为Suse 12;
    • 操作系统发行版不同,如原部署位置的操作系统为Suse 11,新部署环境的操作系统为CentOS 6;
    • 操作系统的内核版本不同;
  • 存储介质的变化
    • 如原存储介质为磁阵,新存储介质为主机自带的硬盘;
    • 如双方都使用磁阵,但控制器软件存在差异;
  • 数据库的差异,如
    • 版本不同;
    • 运行参数存在差异;
    • 操作系统的参数存在差异;
  • SQL的执行计划的差异
    • MySQL运行环境的变化、数据存储介质的变化,对SQL的执行计划产生了影响;
    • 表分析数据缺失,或者不准确,导致执行计划不正确;
    • 索引丢失或者失效;
  • 应用自身的问题
    • MySQL迁移后,应用使用的SQL代码发生了变化;
    • 应用特性的问题,比如某特性在短时间内发起大量的数据库操作,占用了链接池的全部链接,导致被测特性的SQL需要等待较长时间才能拿到数据库链接;
    • 获取数据库链接方法存在问题
      • 应用使用的连接池存在Bug,导致获取链接时效率很低;
      • 应用使用的连接池存在Bug,导致创建了过多的链接,消耗了MySQL侧的大量资源;
  • 数据本身的问题
    • 数据迁移的方法存在的问题,导致表的存储类型发生了变化;
    • 数据不正确,比如迁移后出现了冗余数据;
  • 其它
    • 应用与其它应用共享数据库环境,而其它应用占用了数据库的大量资源,相应的影响了SQL的执行效率;


若非注明,均为原创,欢迎转载,转载请注明来源:MySQL数据库与应用分开部署之后性能劣化严重的定位思路

关于 JackieAtHome

基层程序员,八年之后重新启航

此条目发表在 MySQL 分类目录,贴了 标签。将固定链接加入收藏夹。