53100:无法将共享内存段“/PostgreSQL.883048933”调整为 134217728 字节:设备上没有剩余空间

问题描述 投票:0回答:1

我有一个计划每天运行的 C# 程序。该程序从 Postgres SQL 服务器中提取 10,000 多行数据。它工作正常大约 4 周,但突然停止工作,出现异常

53100:无法将共享内存段“/PostgreSQL.883048933”调整为 134217728 字节:设备上没有剩余空间

查询中的小修改修复了错误,但几天后我必须将日期范围从 80 天更改为 30 天,奇怪的是我没有工作 30 天,但确实工作了 80 天的数据,这显然少于80 天的数据。

在任何日期范围或任何类型的连接条件下使用 DB Visualizer 时,相同的查询也可以正常工作。

我用谷歌搜索并找到了以下解决方案

pq:无法调整共享内存段的大小。设备上没有剩余空间

这清楚地说明了 docker 容器共享内存大小受限的问题。 我不确定数据库服务器是否托管在 Docker 容器中。 数据库服务器是我无法控制的第三方服务器。

我的问题是,问题出在我们端还是数据库端?如果数据库端有问题,为什么它可以在 Db Visualizer 中工作,但不能使用 C# 程序。 我正在使用 Ado.net Data Reader 和 NpgSql.dll 从数据库服务器读取数据。

c# postgresql ado.net npgsql
1个回答
0
投票

连接字符串中的这个参数为我解决了同样的问题:

Options=-c max_parallel_workers_per_gather=0

所以现在我的连接字符串看起来像这样:

ConnectionString = "some private text;Options=-c max_parallel_workers_per_gather=0";
© www.soinside.com 2019 - 2024. All rights reserved.