web-dev-qa-db-ja.com

Postgres SSL SYSCALLエラー:EOF python and psycopgで検出

pythonでpsycopg2パッケージを使用する2.7タイトルのエラーが引き続き発生する:psycopg2.DatabaseError:SSL SYSCALLエラー:EOFが検出されました

PgroutingクエリにWHERE column LIKE ''%X%''句を追加した場合にのみ発生します。例:

SELECT id1 as node, cost FROM PGR_Driving_Distance(
  'SELECT id, source, target, cost 
     FROM Edge_table
     WHERE cost IS NOT NULL and column LIKE ''%x%'' ',
  1, 10, false, false)

インターネット上のスレッドは、直感的にSSLの問題であることを示唆していますが、パターンマッチングの側面をコメント化するたびに、クエリとデータベースへの接続は正常に機能します。

これは、Xubuntu 13.10を実行しているローカルデータベース上にあります。

詳細な調査の後:不正なクエリであり、このパターンを持つリンクではないため、pgrouting拡張機能がデータベースをクラッシュさせることが原因のようです。

すぐに回答を投稿します...

25
Phil Donovan

Digital OceanインスタンスでDropletで遅いクエリを実行すると、この問題に遭遇しました。他のすべてのSQLは正常に動作し、ラップトップで動作しました。 1 GB RAM 512 MBではなくインスタンスにスケールアップした後は正常に動作するため、プロセスでメモリが不足している場合にこのエラーが発生する可能性があります。

10
antonagestam

この問題は、いくつかの不正なクエリが実行されていて、テーブルが無期限にロックされたときに発生しました。以下を実行することでクエリを見ることができました:

SELECT * from STV_RECENTS where status='Running' order by starttime desc;

次に、それらを殺します:

SELECT pg_terminate_backend(<pid>);
5
FoxMulder900

% as %%なぜなら%はプレースホルダーマーカーです。 http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries

2
piro

@ FoxMulder900がしたことと非常によく似た答えですが、彼の最初の選択が機能しなかった点が異なります。ただし、これは機能します。

_WITH long_running AS (
    SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state
    FROM pg_stat_activity
    WHERE (now() - pg_stat_activity.query_start) > interval '1 minutes'
      and state = 'active'
)
SELECT * from long_running;
_

_long_running_からプロセスを強制終了する場合は、最後の行をコメントアウトしてSELECT pg_cancel_backend(long_running.pid) from long_running ;を挿入するだけです

1
Charles F

300万行のテーブルで大きなUPDATEステートメントを実行すると、このエラーが発生しました。私の場合、ディスクがいっぱいでした。スペースを追加したら、UPDATEは正常に機能しました。

1
Fiskabollen

私の場合、それはOOMキラーでした(クエリが重すぎます)

Dmesgを確認します。

dmesg | grep -A2 Kill

私の場合:

Out of memory: Kill process 28715 (postgres) score 150 or sacrifice child
0
papko26