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 / 问题 / 453686
Accepted
Niels Kristian
Niels Kristian
Asked: 2012-11-30 17:54:33 +0800 CST2012-11-30 17:54:33 +0800 CST 2012-11-30 17:54:33 +0800 CST

奇怪的高 CPU I/O 在 postgresql 服务器上等待

  • 772

我目前真的在为一个性能问题而苦苦挣扎,当我的数据库服务器处于“重”负载下时,我所有的数据库查询比正常情况多出 1000 倍。

我有一台运行 ubuntu 12.04 并托管我的 postgresql 9.2 数据库的服务器。服务器在 Hetzner.de 上,它是一个 EX6s(8 核氙气,32Gb 内存和两个 3T HDD,在使用 ubuntus 软件 raid 的 RAID1 设置中)。当我运行大量查询(我经常在晚上进行)时,我发现几乎所有 CPU 使用都花在了 CPU I/O 等待上。我安装了新的遗留监控,我似乎找不到任何其他迹象表明可能是此 CPU I/O 等待的根本原因,这显然是我的性能和吞吐量的瓶颈。

那么问题来了,这个 CPU I/O 等待是什么,它在等待什么?

我添加了我可以从下面的新遗物中获取的所有概览图表。我忽略了什么?一定有明显的瓶颈?我应该在哪里潜水?

数据库服务器 CPU 使用率 - 告诉我有问题的邪恶 https://rpm.newrelic.com/public/charts/cEdIvvoQZCr

数据库服务器平均负载 https://rpm.newrelic.com/public/charts/cMNdrYW51QJ

数据库服务器物理内存 https://rpm.newrelic.com/public/charts/c3dZBntNpa1

数据库服务器磁盘 I/O 利用率——如您所见,磁盘似乎没有被充分利用(几乎没有) https://rpm.newrelic.com/public/charts/9YEVw6RekFG

数据库服务器网络 I/O (Mb/s) - 该网络是一个千兆位内部网络,所有通信都在该网络上进行。 https://rpm.newrelic.com/public/charts/lKiZ0Szmwe7

按挂钟时间排名前 5 的数据库操作 https://rpm.newrelic.com/public/charts/dCt45YH12FK

数据库吞吐量 https://rpm.newrelic.com/public/charts/bIbtQ1mDzMI

数据库响应时间 https://rpm.newrelic.com/public/charts/fPcNL8WA6xx

更新:

做了之后sudo iostat -k 1我开始怀疑了。我得到了很多这样的输出,我在 NR 中看不到:

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
sdc             546.00      2296.00      6808.00       2296       6808
sdd             593.00      1040.00      7416.00       1040       7416
md1               0.00         0.00         0.00          0          0
md0               0.00         0.00         0.00          0          0
md2            1398.00      3328.00     13064.00       3328      13064
md3               0.00         0.00         0.00          0          0
postgresql
  • 1 1 个回答
  • 9427 Views

1 个回答

  • Voted
  1. Best Answer
    EEAA
    2012-11-30T18:03:29+08:002012-11-30T18:03:29+08:00

    简而言之,您需要更快的磁盘。

    当进程处于 iowait 状态时,这意味着它们已发出 IO 请求,并正在等待该请求的结果。有了足够的 RAM,您的大部分工作集都将缓存在 RAM 中,因此,读取不会对这种 IO 争用产生很大影响,因此写入通常是罪魁祸首。

    关于您的磁盘 IO 图,我怀疑 New Relic 出于某种原因没有正确收集 IO 指标。我建议可能会研究像 Munin 这样的辅助数据收集系统。除此之外,您可以通过发出以下命令实时查看磁盘 IO:

    $ iostat -k 1
    

    这将以 kbps 为单位输出实时磁盘读写。我怀疑您会在那里看到很多 New Relic 看不到的活动。

    • 5

相关问题

  • OS X 上的 Postgresql 安装问题

  • 修复 mysql 命令行程序中的 Control-C?

  • 有哪些好的 PostgreSQL 管理工具?[关闭]

  • Access 通过 ODBC 连接到远程 Postgresql 数据库是否可用?

  • 哪个数据库服务器扩展性更好:PostgreSQL 还是 MySQL?

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