私の問題は、アプリケーションが動作してから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秒ごとにこのWebサービスを使用する2台のクライアントマシンがあります。私はPostgresの接続の新しいインスタンスを作成し、すべての初期化時に、Webサービス側で
RemoteServiceClient service = new RemoteServiceClient();
などのWebサービスを初期化していたクライアントアプリケーションから
。ここで私は、接続を開くわけではないだけで初期化:
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アクティビティが発生していない場合はIDLE)にしか気づきません。私はpostgresのデフォルト設定をチェックし、 "max_connections"は100に設定されています。
私はこの問題で本当に苦労しています。
ありがとうございます!
を使用してバージョンを確認し、私はPostgreSQLのフォーラムで尋ねることをアドバイス:あなたはできるだけ早くアップグレードする必要があり – leonbloy
http://archives.postgresql.org/pgsql-general/。 8.3は来年初めからサポートを外します。 9.xはWindows上ではるかに優れています –