gpt4 book ai didi

linux - Ubuntu Linux 中内存压缩期间的 Postgres 延迟问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:39 25 4
gpt4 key购买 nike

我们最近将托管 Postgres 数据库的 EC2 实例升级为具有 244GB 内存的 i2.8xlarge(这是为了利用它附带的大量临时存储)。自升级以来,我们一直在 Postgres 中遇到一些延迟问题,这些问题似乎是由于 Linux 内核中发生的内存压缩造成的。

我们在最近的 Ubuntu 14.04 内核上使用 PostgreSQL 9.3,运行以下(希望相关的子集)配置:

max_connections = 1000
effective_cache_size = '220GB'
shared_buffers = '24GB'
work_mem = '25MB'
maintenance_work_mem = '1024MB'
fsync = off
full_page_writes = on
synchronous_commit = off

我们在此服务器上完全禁用了透明大页面(/sys/kernel/mm/transparent_hugepage/enabled/sys/kernel/mm/transparent_hugepage/defrag 是都设置为 never 并且 /sys/kernel/mm/transparent_hugepage/khugepaged/defrag 设置为 0),我们相当确定我们没有看到 THP 导致的任何问题,因为 /proc/vmstat 中的 thp_* 统计数据和 nr_anon_transparent_hugepages 统计数据从不递增。

我们的问题是我们在 /proc/vmstat 中看到持续的内存压缩(失败和成功)事件(compact_* 下的所有统计数据频繁递增)和一些这些会导致相当严重的停顿,并随着时间的推移变得更糟(大概是因为内存碎片变得更糟)并对我们的应用程序产生影响。我们正在跟踪来自 /sys/kernel/debug/extfrag/unusable_index 的统计数据,当我们看到导致停顿的事件时,经常会看到不同页面顺序之间的一连串移动。

我们想知道这是否只是 Postgres 版本、Linux 内核版本和必须处理大量内存的某种组合(因为显然大部分内存使用是文件缓存,所以 Linux 可能正在处理这些问题Postgres 对此不满意),但除了假设较新版本的 Postgres(9.4 或 9.5)可能出于某种原因完全避免该问题外,无法提出任何其他建议。

$ uname -a
Linux db-01 3.13.0-85-generic #129-Ubuntu SMP Thu Mar 17 20:50:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ dpkg -l postgresql-9.3
postgresql-9.3 9.3.12-1.pgdg14.04+1

最佳答案

在对 DBA StackExchange 进行单独讨论后,有人建议尝试使用非 Trusty (3.13) 内核,因此我们在 Trusty 上使用 Xenial HWE (4.4) 内核进行了测试,事情得到了显着改善,所以这似乎是由于(可能是更高版本的)Trusty 中的 3.13 内核(我们使用这个内核有一段时间了,最​​近才遇到问题,所以可能是引入了一些东西)。

关于linux - Ubuntu Linux 中内存压缩期间的 Postgres 延迟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299824/

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