気まぐれSE日記

地方でエンジニアしてます

PostgreSQL接続数の件

なんかおかしい

先日から挙動がおかしいPostgreSQLサーバですが、今朝も動作が固まりだしたので
調査していたらmuninで計測していたPostgreSQLの接続数が、2000件超えてました。


そりゃ、設定値の上限が1024だから、落ちるわけだわ。




原因はよくわからないが、1000件程度DB接続がidleやauthentication状態で切れないで残ってしまい、
どんどん溜まっていく挙動していたため、cronでidle状態に陥っているpostgresのpidを強制的にkill
するようにしてみました。


↓サンプル


#!/bin/sh

pids=`ps -ef | grep 'postgres: ' | grep -e 'idle\|authentication' | awk '{printf $2 " " }'`
echo "PostgreSQL idle process killing..........."

kill -KILL $pids

こんなことを5分おきに実行させてみました。
正直データベース的にはやばいような気もしますが、様子見です。



その後

上記の対応か、以前からの現象が悪化したのか定かではありませんが、

超やばい。

PostgreSQLデータベースが吹っ飛(ry


↓あぁ〜pg_dumpもまともに動かない。
こんなメッセージ出してpostgresが止まっちまうよ。


XLogFlush: request C/E2294484 is not satisfied ...


pg_dumpでDBのダンプが取れない状況です。
なぜか、tableを一個一個ダンプするのはOKだったのでデータの紛失だけは防げました。


ま、PostgreSQLを再インストールで治ればいいんだけど。

その後 (一応解決)

PostgreSQL 7.2.8再インスコで無事治りましたとさ。
どうやら、DBが壊れかけていてレスポンスが詰まった模様です。

kernel panicでPostgreSQLって壊れるDB なんですかね。

怖すぎる。

あと非常に気になるのは、ここのところ同時期にほかのお客さんの所でもPostgreSQLが爆死し続けてるので、
2007年タイマーかなんかですかねぇ。バグなのかなぁ。