加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:23:56 所属栏目:百科 来源:网络整理
导读:我正在努力解决当前的性能问题,当我的数据库服务器处于“大量”负载时,我的所有数据库查询都需要比正常情况多1000倍. 我有一台服务器运行ubuntu 12.04并托管我的postgresql 9.2数据库.服务器在Hetzner.de上,它是一个EX6s(使用ubuntus软件raid在RAID1设置中使
我正在努力解决当前的性能问题,当我的数据库服务器处于“大量”负载时,我的所有数据库查询都需要比正常情况多1000倍.

我有一台服务器运行ubuntu 12.04并托管我的postgresql 9.2数据库.服务器在Hetzner.de上,它是一个EX6s(使用ubuntus软件raid在RAID1设置中使用32Gb ram和两个3T HDD的8核xenon).
当我运行大量查询(我经常在晚上完成)时,我发现几乎所有的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
简而言之,您需要更快的磁盘.

当进程处于iowait时,这意味着它们已发出IO请求,并正在等待该请求的结果.如果有足够的RAM,大部分工作集将被缓存在RAM中,因此,读取不会导致大部分IO争用,因此写入通常是罪魁祸首.

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

$iostat -k 1

这将输出实时磁盘读写,以kbps为单位.我怀疑你会看到New Relic没有看到的相当多的活动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读