AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 619845
Accepted
Dennis Nolte
Dennis Nolte
Asked: 2014-08-13 05:28:42 +0800 CST2014-08-13 05:28:42 +0800 CST 2014-08-13 05:28:42 +0800 CST

高 IO 负载时 rrdgraph 生成失败

  • 772

我们有一个 4 核 CPU 生产系统,它执行大量的 cronjobs,具有恒定的 proc 队列和通常的负载 ~1.5。

在夜间,我们使用 postgres 做一些 IO 密集型的工作。我们生成一个显示负载/内存使用情况的图表 (rrd-updates.sh) 这有时会在高 IO 负载情况下“失败”。几乎每晚都会发生这种情况,但并非在所有高 IO 情况下都会发生。

我的“正常”解决方案是对 postgres 的内容进行优化和离子化,并增加图形生成的优先级。然而,这仍然失败。使用flock 生成图是半线程证明的。我确实记录了执行时间,对于图形生成,在高 IO 负载期间最多需要 5 分钟,这似乎会导致图形丢失长达 4 分钟。
时间范围与 postgres 活动完全匹配(这有时也发生在白天,虽然不是那么频繁) 离子化到实时优先级(C1 N6 graph_cron vs C2 N3 postgres),在 postgres 之上更好(-5 graph_cron vs 10 postgres ) 没有解决问题。

假设没有收集数据,额外的问题是 ionice/nice 仍然无法正常工作。
即使有 90% 的 IOwait 和 100 的负载,我仍然能够免费使用数据生成命令,延迟可能不超过 5 秒(至少在测试中)。

可悲的是,我无法在测试中准确地重现这一点(只有一个虚拟化的开发系统)

版本:

内核2.6.32-5-686-bigmem
Debian Squeeze rrdtool1.4.3 硬件:SAS 15K RPM HDD 与硬件 RAID1 中的 LVM
挂载选项:ext3与 rw,errors=remount-ro
调度程序:CFQ
crontab:

* * * * *               root    flock -n /var/lock/rrd-updates.sh nice -n-1 ionice -c1 -n7 /opt/bin/rrd-updates.sh

Oetiker 先生在 github 上似乎有一个可能与 rrdcache 相关的错误:
https ://github.com/oetiker/rrdtool-1.x/issues/326

这实际上可能是我的问题(并发写入),但它并不能解释 cronjob 不会失败。假设我实际上有 2 个并发写入flock -n将返回退出代码 1(每个手册页,在测试中确认)因为我也没有收到带有输出的电子邮件,并且观察到 cronjob 在我其他时候确实运行良好不知何故失去了。

示例输出: 缺少行的 CPU 负载图

根据评论,我添加了更新脚本的重要来源。

rrdtool update /var/rrd/cpu.rrd $(vmstat 5 2 | tail -n 1 | awk '{print "N:"$14":"$13}')
rrdtool update /var/rrd/mem.rrd $(free | grep Mem: | awk '{print "N:"$2":"$3":"$4}')
rrdtool update /var/rrd/mem_bfcach.rrd $(free | grep buffers/cache: | awk '{print "N:"$3+$4":"$3":"$4}')

我想念什么或在哪里可以进一步检查?

请记住:生产系统因此没有开发,没有堆栈跟踪或类似的可用或可安装。

linux
  • 1 1 个回答
  • 429 Views

1 个回答

  • Voted
  1. Best Answer
    drookie
    2014-10-18T21:27:52+08:002014-10-18T21:27:52+08:00

    我想这不是 rrdtool 无法更新图表,而是此时无法测量数据。顺便说一句,您测量 CPU 和内存统计数据的方法是错误的,因为它会给您即时结果。CPU 和内存负载可能会在 60 秒间隔内发生巨大变化,但您只需要一个值。您真的应该考虑获取 SNMP 数据,它会给出一个间隔的平均数据。另外,整个管道似乎比 snmpget 调用更昂贵和更慢。可能是差距的主要原因。

    • 2

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve