gpt4 book ai didi

postgresql - 专用数据库服务器重度 iowait 峰值

转载 作者:行者123 更新时间:2023-11-29 11:57:36 27 4
gpt4 key购买 nike

我们有一个专用的数据库服务器,在 linux debian 上运行 PostgreSQL 8.3。定期查询数据库以获取大量数据,同时更新/插入也经常发生。数据库会周期性地在短时间内(例如 10 秒)不响应,然后再次进入正常执行流程。

我通过 top 注意到的是,在那段时间里有一个 iowait 峰值,只要数据库没有响应就会持续。同时 pdflush 被激活。所以我的想法是pdflush要根据脏页和后台的比例,把数据从缓存的内存空间写回磁盘。其余时间,当 postgresql 正常工作时,不会发生 iowait,因为 pdflush 未处于事件状态。我的虚拟机的值如下:

 dirty_background_ratio = 5
dirty_ratio = 10
dirty_expire_centisecs = 3000

我的内存信息:

MemTotal:     12403212 kB
MemFree: 1779684 kB
Buffers: 253284 kB
Cached: 9076132 kB
SwapCached: 0 kB
Active: 7298316 kB
Inactive: 2555240 kB
SwapTotal: 7815544 kB
SwapFree: 7814884 kB
Dirty: 1804 kB
Writeback: 0 kB
AnonPages: 495028 kB
Mapped: 3142164 kB
Slab: 280588 kB
SReclaimable: 265284 kB
SUnreclaim: 15304 kB
PageTables: 422980 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 14017148 kB
Committed_AS: 3890832 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 304188 kB
VmallocChunk: 34359433983 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

我正在考虑调整脏页在内存中停留的持续时间 (dirty_expire_centisecs),以便及时平均划分 iowait 尖峰(更定期地调用 pdflush 以便将更小的数据 block 写入磁盘)。还有其他建议的解决方案吗?

最佳答案

当 postgresql 正在检查点时,可能会发生 IO 峰值。您可以通过 logging checkpoints 验证看看它们是否与服务器没有响应相吻合。

如果是这种情况,调整 checkpoints_segmentscheckpoint_completion_target 可能会有所帮助。查看wiki's advice关于那个和关于 WAL configuration 的文档.

关于postgresql - 专用数据库服务器重度 iowait 峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11448682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com