[pgsql-jp: 38929] Re: terminated by signal 58

Teraoka Yoshinori y-teraoka @ so-netm3.com
2007年 11月 7日 (水) 10:25:59 JST


寺岡です。

私も勉強になります。

Hisakazu Nakai wrote:
> Linux系では、32から63までのシグナルがリアルタイムシグナルとして
> 予約されていて、32から34は既に使われているということですね。
> その他のシグナル(35から63)はアプリケーション側で自由に使って
> いいんだけれど、デフォルトの動作はプロセスの終了とする(しよう)と
> いうことですね。Postgres側の実装として問題(落ち度)はないようですね。
> そうすると最初に戻って、誰がなんの動機で殺人を犯したかとなります。

Linux-PowerEdge の ML で聞いてみたら auditd で調べてみたら?
とアドバイスをもらいました。次回の発生を待たないとダメですが。

/etc/audit/audit.rules か /etc/audit.rules に
-a exit,always -S kill -F a1=58
とか書いてみると。

man auditctl


> メモリを喰いすぎたから落とされたのか、メモリが他のプロセスに
> 圧迫されてため、暇なプロセスとして落とされたのか。
> Linuxのメモリオーバーコミットについては下記URLにありました。
> http://d.hatena.ne.jp/Pirary/20071021/1192979177
> カーネルがプロセスを落とすときに使うシグナルは何番だろう?

死んでくれないと困るわけだし SIGKILL じゃないですかね。(と勝手に推測)
overcommit はデフォルトのままですが 4G の実メモリに 512M の shared_buffer で
基本的に PostgreSQL しか動かしてないですからメモリの使いすぎではないと思います。
OOM Killer はログに出ますしね。


> ただ、実際に殺されたのは、複数forkされているpostmasterの一つ
> ですよね。PostgreSQL全体が死んだわけではないですよね?

はい、1つの process だけが殺されます、が他のプロセスにも影響が出ます。

WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.

-- 
Teraoka Yoshinori <y-teraoka @ so-netm3.com>




pgsql-jp メーリングリストの案内