设为首页 收藏本站
查看: 1367|回复: 0

[经验分享] Zabbix proxy服务器磁盘IO持续报警

[复制链接]

尚未签到

发表于 2019-1-21 09:35:57 | 显示全部楼层 |阅读模式
  一 问题描述
  一台Zabbix proxy收到持续IO报警信息。
xxxxx: High disk io on sdb for 5 minutes Trigger status: PROBLEM
Bandwidth utilization for sdb (hk-zabbix-prod-proxy:disk.status[sdb,util]): 97.1 %  关于使用Zabbix监控磁盘IO可以参考
  http://john88wang.blog.运维网.com/2165294/1545834
  

  

  

  二 解决办法
  登录这台服务器上先找出是什么程序在占用磁盘IO
  使用 vmstat -S M 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
5  1      0    489    376  65049    0    0     0  1956 16554 13392  3  1 94  3  0
0  2      0    480    376  65057    0    0     0  4263 18374 12537  2  1 94  3  0
1  1      0    489    376  65047    0    0     0  2173 16294 13499  2  1 95  2  0
1  1      0    490    376  65046    0    0     0  4225 20427 15262  5  1 92  3  0
6  0      0    492    376  65046    0    0     0   988 15024 12345  2  3 93  2  0
0  1      0    491    376  65045    0    0     0  2068 14824 12619  3  1 94  2  0
6  1      0    483    376  65047    0    0     0  3404 17717 12316  1  1 95  3  0
0  1      0    493    376  65044    0    0     0  2084 13136 13430  1  1 95  3  0
1  1      0    480    376  65056    0    0     0  5292 14833 13194  3  1 92  3  0
3  1      0    476    376  65062    0    0     0  1484 11698 11063  2  1 95  3  0
1  0      0    493    376  65045    0    0     0 14237 11399 11245  1  1 96  2  0
1  0      0    490    376  65046    0    0     0  6484 12396 12582  2  1 95  2  0
1  0      0    469    376  65069    0    0     0  1564 13884 13044  5  1 92  2  0
0  1      0    492    376  65046    0    0     0  2589 12915 12921  2  1 95  2  0  

  通过vmstat看出cpu的wa大概是%3,这里还看不出磁盘IO有多大的问题
  继续使用iostat -xmt 3查看磁盘IO
05/18/2016 11:05:15 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.51    0.00    1.13    2.38    0.00   94.99
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00   267.00    0.00  161.33     0.00     1.67    21.21     0.88    5.41   5.03  81.20
05/18/2016 11:05:18 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.10    0.00    1.02    2.54    0.00   94.35
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     3.67    0.00    2.00     0.00     0.02    22.67     0.02    9.67   4.00   0.80
sdb               0.00   534.33    0.00  181.67     0.00     2.79    31.50     0.99    5.45   4.96  90.17
05/18/2016 11:05:21 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.25    0.00    1.65    2.93    0.00   93.16
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     1.67    0.00    1.00     0.00     0.01    21.33     0.01   13.33   6.00   0.60
sdb               0.00   241.67    0.00  186.00     0.00     1.66    18.31     1.21    6.50   4.99  92.90
05/18/2016 11:05:24 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.29    0.00    3.06    2.86    0.00   90.79
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     2.33    0.00    1.00     0.00     0.01    26.67     0.01    5.33   3.33   0.33
sdb               0.00  1593.33    0.00  186.67     0.00     6.95    76.20     2.25   12.07   4.91  91.63  

  可以看出连续多次输出中,磁盘sdb的利用率都是85%以上
  

  然后使用iotop查看哪些进程在使用io

  可以看出主要是MySQL在使用磁盘IO,但是怎么会有个奇怪的进程[jdb2/sdb1-8]占用那么高的磁盘IO
  

  这里涉及到两个知识点

  •   文件系统EXT4的journaling进程jdb2
  •   MySQL的磁盘写入调优

  

  最快的解决方式就是关闭这个磁盘的journaling日志

  tune2fs -O "^has_journal" /dev/sdb1
  但是不建议这样使用,因为关闭了EXT4的日志记录功能就存在丢失数据的风险。MySQL的InnoDB表即使关闭了EXT4的日志记录功能也能够不丢失数据,只要开启了innodb_doublewrite 参数,默认就是开启的。
  innodb_doublewrite 参数开启后,InnoDB会存储所有的数据两次,先存储数据到doublewrite buffer,然后再存储数据到数据文件中。

mysql> show variables like '%double%';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_doublewrite | ON    |
+--------------------+-------+
1 row in set (0.00 sec)  

  sync_binlog  
  sync_binlog参数也会影响到MySQL数据库服务器的磁盘IO.如果这个变量的值大于0,MySQL server synchronizes its binary log to disk(using fdatasync()) after sync_binlog commit groups are written to the binary log.
  

  innodb_flush_log_at_trx_commit   
  这个参数默认值是1. 简单点说这个参数就是平衡InnoDB事务日志写入磁盘的频率和MySQL性能的一个参数。这个参数有3个取值
  0   每次事务提交操作时不从log buffer中刷新日志到磁盘,InnoDB大约每秒从log buffer中刷新日志到磁盘,也就是说,如果发生MySQL崩溃,那么大约会丢失1秒的数据。
  1   每次事务提交操作时都从log buffer中刷新日志到磁盘,这个是最安全的方式
  

  2  InnoDB的log buffer中的数据在每次事务提交操作之后再刷新到磁盘,普通日志大约每秒刷新到磁盘。如果有MySQL崩溃或者断电等情况大约会丢失1秒的数据
  

  

  对于Zabbix应用,丢失1秒数据的风险性不大。所以设置

  

  innodb_flush_log_at_trx_commit = 0
  

  再观察磁盘IO就恢复正常了
  

  

  

  参考文档:
  http://serverfault.com/questions/363355/io-wait-causing-so-much-slowdown-ext4-jdb2-at-99-io-during-mysql-commit
  https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_doublewrite
  https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_sync_binlog
  https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665853-1-1.html 上篇帖子: 使用Zabbix批量监控网站可用性方案一 下篇帖子: 分布式开源zabbix 监控模板汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表