postgresql服务器上奇怪的高CPU I / O等待
我正在努力解决当前的性能问题,当我的数据库服务器处于“大量”负载时,我的所有数据库查询都需要比正常情况多1000倍.
我有一台服务器运行ubuntu 12.04并托管我的postgresql 9.2数据库.服务器在Hetzner.de上,它是一个EX6s(使用ubuntus软件raid在RAID1设置中使用32Gb ram和两个3T HDD的8核xenon). 所以问题是,这个CPU I / O等待的是什么以及它还在等待什么? 我添加了所有概述图表,我可以从下面的新遗物中抓住.我在俯瞰什么?一定有明显的瓶颈吗?我应该去哪里潜水? 数据库服务器CPU使用情况 – 告诉我一些错误的恶意 数据库服务器负载平均 数据库服务器物理内存 数据库服务器磁盘I / O优化 – 正如您所看到的,磁盘似乎没有得到太多利用(几乎没有) 数据库服务器网络I / O(Mb / s) – 网络是千兆位内部网络,可以进行所有通信. 按挂钟时间排名前5位的数据库操作 数据库吞吐量 数据库响应时间 更新: 在做了sudo iostat -k 1后,我开始怀疑了. 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没有看到的相当多的活动. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |