问题

在很多MySQL实践中,或者压测中,特别是从centos官方下载DVD直接安装的linux,可能会遇到这样一个问题,为什么有些机子硬件性能很好的,数据库入库的速度比那些不好的机子还快。从MySQL Workbench的工具能够看出实时的入库记录数,可能才20~200多条,这速度太慢了。于是怀疑是不是数据库配置问题,等把InnoDB缓存等MySQL配置一模一样之后,这样的问题还是存在。于是就用top、iotop等工具查看到底是为什么。

定位问题过程

当运行在Linux系统下的进程出现性能问题时,一般可以从以下几个方面定位问题:

1.CPU,这里可以使用top命令,top命令详解传送门。

使用top命令,查看下CPU是不是到达性能瓶颈,在top命令运行中,输入大写"P"根据CPU使用大小进行排序进程。

2.内存,在这个问题中,我们可以从top命令就可以看到其实内存还是有余的,也可以使用free -m查看内存情况

3.在top命令后,发现cpu和内存都毫无性能压力的情况下,于是检查下硬盘io,这里使用iotop命令

使用iotop命令,查看硬盘性能,可输入小写“o”过滤没有操作硬盘的进程,再使用方向键盘挪动到按“IO”排序,这个排序是按百分比排序,如下图所示,还可以看到是哪个命令所导致的。

解释问题

上面那张图虽然没有99%,我只是简单举个例子而已,如果你在一个有问题的Linux操作数据库,哪怕你不是操作数据库,只是个很简单的操作硬盘的命令,都会展示出99%的IO的命令,那就是jbd2/sda6-8(我这举个例子而已,你的看到的命令可能不是跟我一模一样,但一定是jbd2开头的,反斜杠后面指的是哪个分区,这个分区很重要,后面关闭jbd2时需要指定分区)。于是我百度下jbd2是什么鬼东西。

原来jbd2的全称是journaling block driver 。这个进程实现的是文件系统的日志功能,磁盘使用日志功能来保证数据的完整性。这个需要评估一下安全和性能哪个更重要,对于一个应用服务器来说,并不保存重要的用户数据,只是实现业务逻辑。如果是数据库的话,就需要考虑启动磁盘写入的完整性检查。但是现在大部分系统在业务和架构层面已经考虑了业务完整性。所以为性能计,这里并不是非常有必须启动日志功能。

解决方法

于是我就把jdb2给关掉,关掉步骤是:

首先用 dumpe2fs /dev/sda6 | more 查看Filesystem Feature下有木有has_journal。如果没有就不用看了 -_-

tune2fs -o journal_data_writeback /dev/sda6

tune2fs -O "^has_journal" /dev/sda6

e2fsck -f /dev/sda6

同时在fstab下重新设定一下,在defaults之后增加

defaults,data=writeback,noatime,nodiratime

重启之后,在使用dumpe2fs查看,若没有了,那说明已经把jbd关闭了。

经过上述处理后的Linux,数据库可以从原本的20~200速率的插入速度,提高到2000~3000左右的速度。

Troubleshoot

如果使用tune2fs时候,提示disk正在mount,如果是非系统分区下,你可以使用

fuser -km /home #杀死所有使用/home下的进程

umount /dev/sda6 #umount

如果是系统分区,也就是/目录下的,那就麻烦了,我还没操作过,但谷歌到的方法大概是,放入安装光盘,进入命令界面来操作的。

希望这篇文章对您有帮助。

祝春祺

jbd2 mysql_2018年第九周-解决因jbd2导致Linux性能过低问题相关推荐

  1. jbd2 mysql_解决因jbd2导致mysql性能过低问题

    在几个月前,有同事因为需要对某项功能进行压力测试,测试mysql的读写性能.当时测下来的结果非常不满意,本地测试环境性能巨差无比,当时我帮忙找问题,top看cpu.内存完全没有问题,iotop看到有j ...

  2. linux服务器挂硬盘无法启动不了怎么办,解决IO错误导致Linux无法启动-挂载原有硬盘...

    之前一直使用vbox虚拟了很多系统,安装一些开发中常用的工具,不同的项目进行不同的划分.但最近突然因为物理磁盘IO异常导致虚拟硬盘无法正常读取,更不要说系统正常启动了.于是便想利用另外一个能启动的系统 ...

  3. 2018-2019-1 20165206 《信息安全系统设计基础》第九周学习总结

    - 2018-2019-1 20165206 <信息安全系统设计基础>第九周学习总结 - 教材学习内容总结 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组.每个字节都有一 ...

  4. 20172304 《程序设计与数据结构》第九周学习总结

    20172304 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本章是第十五章,主要介绍了图的概念. 首先我来介绍一下图的基本结构. 从逻辑上讲,图是由边和结点组成的,在我的理解 ...

  5. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  6. 20162316刘诚昊 第九周学习总结

    学号20162316 2016-2017-2 <程序设计与数据结构>第九周学习总结 ps:在赶进度,进度和其他同学们有所差距. 教材学习内容总结 -1. 当用某个类声明引用变量时,它可以指 ...

  7. 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...

  8. 2018-2019-20172329 《Java软件结构与数据结构》第九周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十五章-图 一.图及无向图 1.图的相关概 ...

  9. 第九周(11.02-11.08)学习笔记

    一.学习目的 掌握系统编程和系统调用的概念 掌握系统编程错误处理的方式 掌握Unix/Linux系统级I/O:open close read write seek stat 4. 掌握RIO 掌握I/ ...

最新文章

  1. 【jquery】文档操作
  2. Ubuntu10.10更新源
  3. mysql ——读写分离
  4. 14-CoreData兼容iOS9和iOS10
  5. boost::uuid模块实现用窄存档测试序列化 uuid的测试程序
  6. R语言观察日志(part21)--包的组件之元数据
  7. P4551 最长异或路径
  8. Asp.Net开通支付宝移动端网页支付
  9. Python 内置模块之 os
  10. PyTorch | torch.tensor使用方法,如何使用torch.tensor
  11. 深入解析:MySQL对分布式事务 XA Transactions 的支持
  12. Hyper-V 3 限定虚拟机可用的CPU利用率
  13. java开发crm遇到的难点_CRM 2011 开发中遇到的问题小结
  14. c语言程序设计精髓第七周编程题,C语言程序设计精髓编程题在线测试
  15. Keil uVision5 MDK-ARM 程序使用—————中文图解
  16. anychart HTML5中文乱码,anychart使用手册一.doc
  17. 《笑傲江湖》清心普善咒——曲谱(琴箫合奏曲)
  18. python版公众号爬虫
  19. 经济观察评论:现在是筑底时期, 对复苏仍可以保持乐观!]
  20. 企业如何CRM管理软件中受益

热门文章

  1. win10系统扩大C盘大小
  2. docker容器网络的配置及常用操作
  3. XC3062A耐压30V锂电池充电IC双灯指示SOT23-6
  4. 前端岗位编写代码注意规范
  5. U盘安装Ubuntu Server14.04LTF
  6. 红色党政风演讲活动方案PPT模板
  7. 北漂几年了?感觉如何?后悔了还是更坚定了?
  8. 表格显示名称,通过id查找名称
  9. 双移线驾驶员模型,多项式双移线模拟 采用多项式搭建双移线期望路径,基于郭孔辉单点预瞄理论,搭建双移线simulink驾驶员模型
  10. 十七点安全知识详细了解进程和病毒