- PR -

PostgreSQLとの接続が止まってしまいます

1
投稿者投稿内容
yasshi
会議室デビュー日: 2006/09/25
投稿数: 9
投稿日時: 2006-11-13 22:19
プログラムも何もかも初心者のものです。

PostgreSQLを使ってJAVAプログラムでシステムを作っていますが、プログラムをある程度使っていると、PostgreSQLとの接続ができなくなってしまいます。

プログラムではトランザクションを使っているので、begin、commitやconnectionの切り忘れかと思って見ているのですが、ちゃんとできているように思われます。

エラーがでるタイミングが決まっていないのでプログラムのログを見てもどこを直せばいいのかわからず困っています。

PostgreSQLでログをとると下記のようになっています。

2006-11-13 20:46:54 LOG: server process (PID 5160) was terminated by signal 66
2006-11-13 20:46:54 LOG: terminating any other active server processes
2006-11-13 20:46:55 WARNING: terminating connection because of crash of another server process

シグナル66の意味を検索しても何かわからないので困っています。
エラーの原因がわかる方がおられましたらよろしくお願いします。
yasshi
会議室デビュー日: 2006/09/25
投稿数: 9
投稿日時: 2006-11-13 22:35
PostgreSQL 8.0 JAVA 1.5.0 Tomcat 5.5.4 OSはWindowsXPを使っています。

かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-11-14 09:39
Javaの方も何かエラーを出してはいない?

解決になるかどうかは分からないけど、以下のMLで同じような悩みを抱えている人がいた。
http://archives.postgresql.org/pgsql-jdbc/2005-09/msg00050.php
yasshi
会議室デビュー日: 2006/09/25
投稿数: 9
投稿日時: 2006-11-16 00:54
javaの方のエラーは以下のようなものです

java.sql.SQLException: Cannot get connection for URL jdbc:postgresql://localhost:5432/***** : The connection attempt failed.
at org.enhydra.jdbc.standard.StandardDataSource.getConnection(StandardDataSource.java:216)
at org.enhydra.jdbc.standard.StandardPooledConnection.<init>(StandardPooledConnection.java:65)
at org.enhydra.jdbc.standard.StandardXAConnection.<init>(StandardXAConnection.java:81)
at org.enhydra.jdbc.standard.StandardXADataSource.getXAConnection(StandardXADataSource.java:109)
at org.enhydra.jdbc.pool.StandardXAPoolDataSource.create(StandardXAPoolDataSource.java:155)
at org.enhydra.jdbc.pool.GenericPool.getFromPool(GenericPool.java:247)
at org.enhydra.jdbc.pool.GenericPool.checkOut(GenericPool.java:351)
at org.enhydra.jdbc.pool.StandardPoolDataSource.getConnection(StandardPoolDataSource.java:194)
at org.enhydra.jdbc.pool.StandardPoolDataSource.getConnection(StandardPoolDataSource.java:164)
・・・・・・・

ただ単にデータベースに接続できないエラーのように思うのですが・・・・

postgreSQLのログを見るとbegin commitが入る場合と入らない場合があるのでそれが原因かと思ってプログラムを見直しているのですが今のところ抜けているところがありません 実際ちゃんとcommitされているので・・・・・

トランザクションにはJOTMを使っていて、その中で LOCK TABLE を使っているのですがそれが原因でしょうか?
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2006-11-16 07:46
引用:

postgreSQLのログを見るとbegin commitが入る場合と入らない場合があるのでそれが原因かと思ってプログラムを見直しているのですが今のところ抜けているところがありません 実際ちゃんとcommitされているので・・・・・



commit はされているけど、close してないので、コネクションが作成し続けられ、
最後は、最大数にまで達した、ということではありませんか?

PostgreSQLでのsession数確認方法

こちらのスレッドにてコメントされている方法で確認してみてはいかがでしょうか。
原因を特定してからコードを追った方が、効率はよいとおもいますよ。
1

スキルアップ/キャリアアップ(JOB@IT)