2012-04-26 212 views
1

我遇到的问题是我的PostgreSQL实例经常在我的应用程序运行后的某个时候停止工作。通过重新启动PostgreSQL的Windows服务,我能够重新开始工作,但我需要知道是什么让我的postgres实例停止工作。PostgreSQL服务停止工作

通过查看日志的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" 

这是我工作的情况。我正在使用在PostgreSQL(8.3)数据库上进行一些处理的WCF服务。每10秒钟有2个“客户”机器使用此Web服务。

从客户端应用程序,我初始化网络服务像

RemoteServiceClient service = new RemoteServiceClient(); 

在网络服务方面,在每一个初始化我做Postgres的连接的新实例。在这里,我不打开连接,只有初始化:

public class Service : IService 
{ 
    NpgsqlConnection connection = null; 

    /// <summary> 
    /// Default constructor for remote service 
    /// </summary> 
    public Service() 
    { 
     connection = new NpgsqlConnection(Utils.DBConnectionString); 
    } 
} 

在我的Web服务的功能,我打开&密切的联系需要,这样一来我不离开的飞行打开的连接。通过查看机器使用Web服务时的常见活动,我注意到只有大约3-4个连接(没有DB活动发生时为空闲)。我检查了postgres的默认设置,“max_connections”设置为100.

我真的很难与这个问题,任何帮助,将不胜感激!

谢谢!

+0

检查您的版本,我劝你还是问PostgreSQL的论坛:http://archives.postgresql.org/pgsql-general/ – leonbloy 2012-04-26 02:32:36

+3

你应该尽快升级。 8.3将在明年初取消支持。在Windows上,9.x更好 – 2012-04-26 06:50:30

回答

3

有一个bugfix in version 8.3.8(发布日期:2009-09-09)这个问题:

修复Windows共享内存分配的代码(山田勉,马格努斯)

此错误导致经常报告“无法重新连接到共享内存”错误消息。

使用SELECT version();