【问题标题】:PostgreSQL 11 Shared Memory Error: could not open shared memory segment "/PostgreSQL.XXXXXXXX": No such file or directoryPostgreSQL 11 共享内存错误:无法打开共享内存段“/PostgreSQL.XXXXXXXX”:没有这样的文件或目录
【发布时间】:2019-07-09 14:18:36
【问题描述】:

共享内存文件在 Postgres 11 中被删除一段时间(约 15 小时)

2019-07-09 08:46:41 CDT [] [6723]: [1-1] user=,db=,e=58P01 ERROR:  could not open shared memory segment "/PostgreSQL.291691635": No such file or directory
2019-07-09 08:46:41 CDT [] [6722]: [1-1] user=,db=,e=58P01 ERROR:  could not open shared memory segment "/PostgreSQL.291691635": No such file or directory
2019-07-09 08:46:41 CDT [10.40.0.204(60550)] [13880]: [1-1] user=user_name,db=db_name,e=58P01 ERROR:  could not open shared memory segment "/PostgreSQL.291691635": No such file or directory
2019-07-09 08:46:41 CDT [10.40.0.204(60550)] [13880]: [2-1] user=user_name,db=db_name,e=58P01 CONTEXT:  parallel worker
2019-07-09 08:46:41 CDT [10.40.0.204(60550)] [13880]: [3-1] user=user_name,db=db_name,e=58P01 STATEMENT:  WITH overall_reviewed AS (SQL Query)

GCP 虚拟机配置

CPU: 4
RAM: 16 GB
 OS: Ubuntu 18.04.1 LTS

内核共享内存设置shared

kernel.shmmax=8589934592
kernel.shmall=2097152 

postgresql.config

max_connections = 500
shared_buffers = 4GB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 4194kB
min_wal_size = 1GB
max_wal_size = 2GB
max_worker_processes = 4
max_parallel_workers_per_gather = 2
max_parallel_workers = 4

启动期间:没有错误/警告 大约 15 小时后,一些共享内存文件被删除,我怀疑是否还有其他进程正在删除“/dev/shm”中的文件?

不知道根本原因是什么

【问题讨论】:

  • 您找到解决方案了吗?我在我的 OpenBSD postgresql 设置中也随机遇到了这个问题。每隔一两周,它就会随机出现在连接到数据库的客户端之一上。发生这种情况时,postgresql 仍然可以正常工作,只需重新启动客户端就足以让事情继续工作一周左右。
  • 在 postgresql.conf 中设置 dynamic_shared_memory_type = none 确实解决了这个问题。
  • 这个问题有什么新的解决方案@n1000 吗? "none" 似乎不再是 dynamic_shared_memory_type 的选项。

标签: postgresql systemd ubuntu-18.04 postgresql-11


【解决方案1】:

在 postgresql.conf 中设置 dynamic_shared_memory_type = none 确实解决了这个问题。

【讨论】:

  • 它在 postgres@10 中工作,但不再在 @12 中,我使用 mmap 代替,现在它正在工作
【解决方案2】:

在 Ubuntu 18.04 和 PostgreSQL 11 上遇到了同样的问题,经过更多研究后,我为我们找到了解决方案。当备份用户(与PG服务用户相同的用户)登录系统时发生错误。以下链接描述了 /dev/shm 下的存储在用户登录系统时被删除(同一用户)。所以我们的解决方案是更改以下内容:

/etc/systemd/logind.conf 

添加线

RemoveIPC=no

然后重启服务

systemctl restart systemd-logind.service

来源:

https://www.postgresql-archive.org/systemd-deletes-shared-memory-segment-in-dev-shm-Postgresql-NNNNNN-td5883507.html

https://superuser.com/questions/1117764/why-are-the-contents-of-dev-shm-is-being-removed-automatically

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多