我遇到的问题是我的PostgreSQL实例经常在我的应用程序运行后停止工作。通过重新启动PostgreSQL Windows服务,我可以让它再次运行,但我需要知道是什么让我的postgres实例停止工作。
通过查看postgres日志,我收到此错误(其中包括):
"FATAL: could not reattach to shared memory (key=348, addr=01E70000): 487
2012-04-25 11:05:24 PDT WARNING: worker took too long to start; cancelled"
这是我正在研究的方案。我正在使用一个WCF服务,在PostgreSQL(8.3)数据库上进行一些处理。每10秒就有2台'客户'计算机正在使用此Web服务。
从客户端应用程序我正在初始化像
这样的Web服务RemoteServiceClient service = new RemoteServiceClient();
在Web服务端,在每次初始化时,我都会创建postgres连接的新实例。这里我没有打开连接,只是初始化:
public class Service : IService
{
NpgsqlConnection connection = null;
/// <summary>
/// Default constructor for remote service
/// </summary>
public Service()
{
connection = new NpgsqlConnection(Utils.DBConnectionString);
}
}
在我的网络服务功能中,我打开&amp;根据需要关闭连接,这样我就不会动态打开连接。通过查看机器正在使用Web服务时的常见活动,我注意到只有大约3-4个连接(没有DB活动时发生IDLE)。我检查了postgres默认设置,“max_connections”设置为100。
我真的很难解决这个问题,任何帮助都会受到赞赏!
谢谢!
答案 0 :(得分:3)
此问题有bugfix in version 8.3.8(发布日期:2009-09-09):
修复Windows共享内存分配代码(Tsutomu Yamada,Magnus)
这个错误导致经常报道的“无法重新连接到共享 记忆“错误信息。
使用SELECT version();