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_cost为1似乎可以减少问题的影响。尽管这不是一个完整的解决方案,所以如果有解决方案,仍然希望获得适当的修复。这个想法归功于此博客文章。
更新2 已关闭原始问题报告,并创建了一个新的内部问题,公众看不到。但是,根据GCP客户经理的电子邮件回复,谷歌于2019年8月11日推出了修复程序。
这对我有用,我认为谷歌需要改变一个标志,说明他们如何在其末端启动postgres容器,而我们不能影响它们在postgres内部。
答对了。您的容器技术以某种方式限制了共享内存。该错误正在按设计工作。您可以弄清楚如何修复安装选项,或者可以通过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)
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |