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

Tatsuo Ishii ishii @ sraoss.co.jp
2008年 8月 27日 (水) 18:23:13 JST


遅いフォローで申し訳ありません.石井です.

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

少なくとも,0, 1, 2はcloseすべきでした.
# 後 chdir("/")していない:-<

3以降もcloseするでよいと思いますが...

一応確認したいんですけど,port 80 のソケット用のfdは,0,1,2のどれかに
なっているんでしょうか?もしわかったら教えてください.
--
Tatsuo Ishii
SRA OSS, Inc. Japan

> -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 mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp


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