WALSync 冻结的 Postgres 系统
Postgres System frozen in WALSync
我已经连续遇到这个问题三次了,我不知道是什么原因造成的。
上下文:我是 运行 大型脚本,有时系统会卡在 WALSync 状态。最好的描述方式就是pg_stat_activity
的这个观点
pid
查询
状态
wait_event_type
wait_event
5172
(编辑)
活跃
LWLock
WALWrite
1887
空
Activity
LogicalLauncherMain
1884
空
IO
数据文件刷新
1883
空
IO
数据文件刷新
1885
空
IO
WALSync
- 磁盘 space 不是问题。
- 没有使用事务控制。
- 其他时候发生这种情况是在不同的查询上(即不是这个特定的查询,而是关于负载或其他什么?)。
- 相同的脚本已经在开发数据库(同一台机器和集群)中进行了测试并且工作正常。
- 系统上没有其他 activity 发生。
- 我试过取消和终止所有 pid,但没有任何反应。
- 继续前进的唯一方法是重新启动服务器:(((((
- 无法执行 other/new 查询(除了 pg_stat_activity 之类的查询)。
关于:
- PG 13.2
- EC2,Ubuntu,8 核,32GB 内存
- 没有复制。
- 机器基本上只是一个处理中心,所以我试着相应地调整(但我不是专家,欢迎任何建议)见下文...
非默认设置:
shared_buffers = 8GB
effective_cache_size = 24GB
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 500
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 52428kB
min_wal_size = 4GB
max_wal_size = 16GB
max_worker_processes = 8
max_parallel_workers_per_gather = 8
max_parallel_workers = 8
max_parallel_maintenance_workers = 2
任何关于如何进一步挖掘的想法或见解将不胜感激!
您的 I/O 系统过载。
如果是Linux,通过运行
验证
sar -u 1 10
如果%iowait
一直在两位数范围内,你就有证据了。
好吧,我想通过配置调整解决了这个问题。在我将 maintenance_work_mem
更改为 4GB 后,我 运行 两次相同的脚本都没有任何问题。为了任何有价值的东西。
我已经连续遇到这个问题三次了,我不知道是什么原因造成的。
上下文:我是 运行 大型脚本,有时系统会卡在 WALSync 状态。最好的描述方式就是pg_stat_activity
的这个观点pid | 查询 | 状态 | wait_event_type | wait_event |
---|---|---|---|---|
5172 | (编辑) | 活跃 | LWLock | WALWrite |
1887 | 空 | Activity | LogicalLauncherMain | |
1884 | 空 | IO | 数据文件刷新 | |
1883 | 空 | IO | 数据文件刷新 | |
1885 | 空 | IO | WALSync |
- 磁盘 space 不是问题。
- 没有使用事务控制。
- 其他时候发生这种情况是在不同的查询上(即不是这个特定的查询,而是关于负载或其他什么?)。
- 相同的脚本已经在开发数据库(同一台机器和集群)中进行了测试并且工作正常。
- 系统上没有其他 activity 发生。
- 我试过取消和终止所有 pid,但没有任何反应。
- 继续前进的唯一方法是重新启动服务器:(((((
- 无法执行 other/new 查询(除了 pg_stat_activity 之类的查询)。
关于:
- PG 13.2
- EC2,Ubuntu,8 核,32GB 内存
- 没有复制。
- 机器基本上只是一个处理中心,所以我试着相应地调整(但我不是专家,欢迎任何建议)见下文...
非默认设置:
shared_buffers = 8GB
effective_cache_size = 24GB
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 500
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 52428kB
min_wal_size = 4GB
max_wal_size = 16GB
max_worker_processes = 8
max_parallel_workers_per_gather = 8
max_parallel_workers = 8
max_parallel_maintenance_workers = 2
任何关于如何进一步挖掘的想法或见解将不胜感激!
您的 I/O 系统过载。
如果是Linux,通过运行
验证sar -u 1 10
如果%iowait
一直在两位数范围内,你就有证据了。
好吧,我想通过配置调整解决了这个问题。在我将 maintenance_work_mem
更改为 4GB 后,我 运行 两次相同的脚本都没有任何问题。为了任何有价值的东西。