前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >磁盘使用了偏高问题排查思路

磁盘使用了偏高问题排查思路

作者头像
SRE运维实践
发布2019-07-08 13:25:37
3.7K0
发布2019-07-08 13:25:37
举报
文章被收录于专栏:SRE运维实践

序言

双十一即将来临,做电商的大佬们都准备好了各种应急预案了么。。。例如服务降级,流量控制,扩容方案。。。又快到了一年一度的剁手大会了,不过这个时候,应该是运维最繁忙的时候了吧。。。使用率百分百?用流量打爆。。。Emmm,这很酷

一台服务器,最关键的地方无非在于CPU,内存,网络IO,磁盘IO,一个成为瓶颈都是不可以的,当磁盘IO繁忙的时候,我们可以查查是什么进程导致了磁盘IO繁忙。。。当磁盘被打爆了会如何?Emmm,重启了解一下。。。服务器是没有响应的。

磁盘使用率偏高

在虚拟机中模拟测试,使用dd来模拟写入的操作(写入的文件为zero,输出的文件为kel,每次写入的大小为1M,写入次数为12400):

使用iostat找出哪块磁盘繁忙,主要看的指标一个是cpu的使用率中iowait值很高,另外一个则是磁盘的使用率util,可以看到sdb的磁盘使用了达到了百分百,完美,磁盘写入很饱和(执行的命令iostat -x 1 。参数-x表示更详细的统计信息,1表示每隔一秒显示一次)。

使用iotop找出使用磁盘繁忙的进程pid,可以看到进程的pid为12339(执行的命令为iotop -Po,参数P表示只显示进程,不显示线程,参数o表示只显示正在进行io操作的进程):

查看到进程的pid为12339,从而可以查看进程:

也可以使用dmesg来进行打印相关磁盘写入写出的内容使用的命令如下(在统计的时候,先清空dmesg的内容,使用命令为dmesg -c,内核参数记得关闭,否则也会产生大量的io):

可以看到在这个磁盘上进行读写的每个进程的操作次数,例如进程dd的pid为12408,读写的次数为359次。

inode号也会显示,从而可以看到读写哪个文件:

然后呢?找到了磁盘使用率的程序又如何。。。可能使用磁盘的进程有很多,那么就要考虑分散磁盘的压力,可能sdb的压力很大,有mysql进程,有应用程序的日志存放路径。。。那么一种方法就是分散压力,将数据库进行迁移到其他的磁盘,一种方法就是查看应用程序的日志怎么这么多,是不是哪个傻子使用了debug的日志级别。

风言风语

命令的执行者:

很多人认为作为命令的执行者就毫无责任,怎么可能。。。都是不带脑子的么,做什么事儿不能往脑子里面过过么。。。我就误操作了,你看我骄傲了嘛,你看我自豪了嘛。。。简直是美滋滋。。。

如何在容器里面运行容器呢?为什么要在容器里面运行容器呢?。。。这触碰到了我的知识盲区。。。百思不得其解。。。其实在容器里面运行容器,可以造成一种假象,实际情况是,两个容器都运行在一个物理机上,但是。。。在父容器里面的docker命令改掉了,使用一个label进行过滤,从而就可以假装是运行在容器之中的容器。

docker命令只是一个客户端,我倒是不在意这种实现方式。。。我只是在意这种设计的目标是什么?为什么要这种设计方法?资源隔离?不像。。。在容器进行调度的时候,如果要做负载均衡,直接物理机的调度更加合适,而使用一个中间容器,增加了调度的复杂度,那么,为什么会有这种设计?出于一种什么邪恶的动机?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档