[pgpool-general-jp: 1356] Re: pgpoolのプロセスがメモリを大量消費する

"小林 良太郎" kobayashi @ mec-jp.com
2015年 2月 10日 (火) 23:07:40 JST


石井さん

ありがとう御座います。

アプリケーションのtomcatでコネクションをプールしているので
プロセスが再起動しないのは、そのせいかもしれません。

valgrindを実行して、ログに出力しました。
添付しましたので、ご参照ください。

構成としては、pgpoolを入れたサーバを2台用意して、HA構成にしています。(watchdog使用)
インメモリクエリキャッシュ機能を有効にしています。

配下にDBサーバを3台用意して、Streaming Replication構成にしています。

Tatsuo Ishii wrote:
> 石井です。
> 
> > 小林と申します。お世話になります。
> > 
> > pgpoolII 3.3.4と、postgreSQL 9.3.5を使用して会員制サイトを運用しています。
> > 
> > きっかけは不明ですが、pgpoolプロセスのメモリ使用量が増えて
> > oomkillerにてkillされる事象が数時間おきに起きております。
> > 
> > topコマンドをメモリ使用量でsortしてみると、pgpoolプロセスが
> > 多いものでメモリを600Mも使用しています。
> > 
> > 使用量が徐々に増えていって数時間おきにswapまで食い尽くして
> > oomkillerでkillされてしまいます。
> > 
> > <topコマンド結果抜粋>
> > -----------------------------------------------------------------------------------
> > top - 17:32:19 up 7 days,  1:30,  3 users,  load average: 0.02, 0.04, 0.00
> > Tasks: 215 total,   1 running, 214 sleeping,   0 stopped,   0 zombie
> > Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
> > Mem:   1910636k total,  1894164k used,    16472k free,      864k buffers
> > Swap:  4095992k total,  3772432k used,   323560k free,    68652k cached
> > 
> >   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> > 16809 root      20   0 1660m 606m  44m S  0.0 32.5   1:48.56 pgpool
> > 12756 root      20   0 1130m 585m  36m S  0.0 31.4   1:07.16 pgpool
> >  4714 root      20   0 1069m 412m  42m S  0.0 22.1   1:01.20 pgpool
> > 10906 root      20   0  501m 173m  25m S  0.0  9.3   0:15.59 pgpool
> > 11691 root      20   0  651m  21m  21m S  0.0  1.1   0:28.55 pgpool
> > 14277 root      20   0  285m  19m  18m S  0.0  1.0   0:18.17 pgpool
> >  9848 root      20   0  290m  18m  17m S  0.0  1.0   0:00.08 pgpool
> > 12850 root      20   0  988m  16m  15m S  0.0  0.9   0:55.79 pgpool
> > 12878 root      20   0 1201m  11m  11m S  0.0  0.6   1:11.16 pgpool
> > -----------------------------------------------------------------------------------
> > 
> > サーバは以下の構成です。
> > ・CentOS6.4
> > ・MEM:2GB
> > ・SWAP:4GB
> > 
> > プロセスを定期的に再起動するために
> > 以下のように設定変更しても、セッションを使用中なのか、子プロセスは再起動しません。
> > 
> > <pgpool.confの設定>
> > child_life_time = 10
> > child_max_connections = 1
> 
> これでも子プロセスが再起動しないのは、アプリケーションかアプリケーショ
> ンサーバ、あるいは別途コネクションプーラがいて、pgpool-IIへのコネクショ
> ンを離さないためだと思われます。
> 
> > connection_life_time = 600
> > 
> > ココまで多くのメモリを消費しているのを見るのは初めてなのですが、
> > 原因や対処方法についてご教示頂けると幸いです。
> 
> 3.3.4でこのような報告は聞いたことがないので、特定の設定や使うSQLのパター
> ンで生じするメモリーリークでしょう。
> 
> こちらで再現できるテストケースを示していただけるか、valgrindをかけた結
> 果を見せていただければ、分かると思います。
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: valgrind.log
型:         application/octet-stream
サイズ:     172630 バイト
説明:       無し
URL:        <http://www.sraoss.jp/pipermail/pgpool-general-jp/attachments/20150210/8079cdbc/attachment-0001.obj>


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