[pgpool-general-jp: 472] Re: pgpoolAdmin で pgpool 起動→ apache 上がらず

ISHIDA Akio iakio @ mono-space.net
2008年 7月 29日 (火) 16:10:13 JST


石田です。

とりあえずdaemonizeする時に全部クローズしてしまうのが
良いのではないでしょうか(dup2じゃなくてdupの方がいいかも
しれませんが)。

-n オプションを付けた場合はファイルディスクリプタは
引き継がれてしまいますが、pgpoolがhttpdのプロセスグループ
になってしまうので、httpdを停止するとpgpoolも止まります。
これの善し悪しはともかく、結果的にport80を占有することは無いです。
----
RCS file: /cvsroot/pgpool/pgpool-II/main.c,v
retrieving revision 1.37
diff -u -r1.37 main.c
--- main.c      22 May 2008 14:36:38 -0000      1.37
+++ main.c      29 Jul 2008 06:36:41 -0000
@@ -621,6 +621,7 @@
 static void daemonize(void)
 {
        int                     i;
+       int                     fdlimit;
        pid_t           pid;

        pid = fork();
@@ -652,7 +653,10 @@
        dup2(i, 0);
        dup2(i, 1);
        dup2(i, 2);
-       close(i);
+
+       fdlimit = sysconf(_SC_OPEN_MAX);
+       for (i = 3; i < fdlimit; i++)
+               close(i);

        write_pid_file();
 }
----

2008/7/29 ISHIDA Akio <iakio @ mono-space.net>:
> こんにちは。石田@苫小牧と申します。
>
> こちらでも再現したので、報告します。
> Apache/2.0.52
> PHP 5.1.6
> CentOS 4.6
>
> こんなスクリプトで再現します。
> <?php
> exec("/usr/local/bin/pgpool >/dev/null &", $output, $ret);
> ?>
>
> これをDocumentRootにおいて、httpからアクセスします。
>
> ----
> [root @ localhost html]# service httpd start
> httpd を起動中:                                            [  OK  ]
> [root @ localhost html]# wget http://127.0.0.1/pgpool.php
> --19:11:28--  http://127.0.0.1/pgpool.php
>           => `pgpool.php.1'
> 127.0.0.1:80 に接続しています... 接続しました。
> HTTP による接続要求を送信しました、応答を待っています... 200 OK
> 長さ: 0 [text/html]
>
>    [ <=>                                 ] 0             --.--K/s
>
> 19:11:28 (0.00 B/s) - `pgpool.php.1' を保存しました [0/0]
>
> [root @ localhost html]# service httpd restart
> httpd を停止中:                                            [  OK  ]
> httpd を起動中: (98)Address already in use: make_sock: could not bind to
> address [::]:80
> no listening sockets available, shutting down
> Unable to open logs
>                                                           [失敗]
> ----
> 想像ですが、phpがpopenした時にが引き継がれているのでは
> ないでしょうか。



-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>


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