Google Cloud SQL PG11:无法调整共享内存段的大小

Nic*_*ick 5 postgresql google-cloud-sql

我最近在Google Cloud SQL上将Postgres 9.6实例升级到11.1。从那时起,我开始在多个查询中注意到大量以下错误:

org.postgresql.util.PSQLException:错误:无法将共享内存段“ /PostgreSQL.78044234”的大小调整为2097152字节:设备上没有剩余空间

根据我的阅读,这可能是由于PG10中的更改所致,典型的解决方案涉及增加实例的共享内存。据我所知,这在Google Cloud SQL上是不可能的。我也尝试过调整work_mem,但没有任何积极效果。

这可能并不重要,但是为了完整起见,实例配置了30 GB的RAM,120 GB的SSD HD空间和8个CPU。我以为Google会为那些规格提供适当的共享内存设置,但是也许不会吗?有任何想法吗?

UPDATE 将数据库标志设置random_page_cost1似乎可以减少问题的影响。尽管这不是一个完整的解决方案,所以如果有解决方案,仍然希望获得适当的修复。这个想法归功于此博客文章

更新2 已关闭原始问题报告,并创建了一个新的内部问题,公众看不到。但是,根据GCP客户经理的电子邮件回复,谷歌于2019年8月11日推出了修复程序。

eam*_*234 6

这对我有用,我认为谷歌需要改变一个标志,说明他们如何在其末端启动postgres容器,而我们不能影响它们在postgres内部。

https://www.postgresql.org/message-id/CAEepm%3D2wXSfmS601nUVCftJKRPF%3DPRX%2BDYZxMeT8M2WwLSanVQ%40mail.gmail.com

答对了。您的容器技术以某种方式限制了共享内存。该错误正在按设计工作。您可以弄清楚如何修复安装选项,或者可以通过max_parallel_workers_per_gather = 0禁用并行性。

show max_parallel_workers_per_gather;
-- 2
-- Run your query
-- Query fails
alter user ${MY_PROD_USER} set max_parallel_workers_per_gather=0;
-- Run query again -- query should work
alter user ${MY_PROD_USER} set max_parallel_workers_per_gather=2;
-- -- Run query again -- fails
Run Code Online (Sandbox Code Playgroud)

  • 另外,我大约一个月前就向Google提出了一个错误。似乎已将其分配给某人,但谁知道要等待多长时间。https://issuetracker.google.com/issues/132367953我不知道它是否真的有帮助,但是如果您受到此影响,对链接的问题加注星标可能会提高优先级并加快解决时间。 (2认同)