mysql:14110
From: Koki Takeda <Koki Takeda <koh@xxxxxxxxxx>>
Date: Wed, 18 Jul 2007 18:45:07 +0900
Subject: [mysql 14110] 稀に mysql_query  処理から戻ってこなくなる
はじめまして。竹田と申します。
この度、MySQL を利用した php プログラムを作成致しました。
プログラム内で、子プロセスを生成し、子プロセス内で、複数回、
MySQL クエリを送信しているのですが、下記症状が、稀に発生して困
っております。
下記に、詳細をお知らせ致しますので、恐れ入りますが、何か対策を
ご教授いただければ幸いです。
よろしくお願い致します。
---------------------
■ 動作環境
 OS:  Solaris 8
 php:  4.3.9
 Mysql: Ver 4.0.12-standard for sun-solaris2.8 on sparc
■ 処理内容
 作成した php プログラム(仮名:test.php)内で、MySQL関数 
 mysql_query により、MySQL クエリ(select、insert)を繰り返し送
 信しています。
 また、test.php は、プロセスをフォークしており、5つの子プロ
 セスが同時に動作しています。子プロセス全体で、2500回程度、
 MySQL クエリを送信しています。
 以下に、プログラムの概要とプログラムフローの概略をご説明致し
 ます。
 <test.php プログラム概要>
  任意のファイルを別のサーバに転送する処理です。
 <test.php プログラムフロー概略>
  開始
  転送対象ファイル一覧取得クエリ実行(実環境:約60レコード)
   mysql_query (select)
  サーバ一覧取得クエリ実行(実環境:5レコード)
   mysql_query (select)
  ループ1開始(サーバの数分ループ){
    プロセスをフォーク
    if フォーク失敗 {
      エラー処理
    } elseif 親プロセス {
      プロセスIDバックアップ
    } else { 子プロセス
      ループ2開始(転送対象ファイルの数分ループ){
        転送判定クエリ実行
         mysql_query (select)
        if 転送対象でない(転送済) {
          ログ書き出しクエリ実行
           mysql_query (insert)
          ループ2継続
        }
        転送処理実行
      } ループ2終了
    }
  } ループ1終了
  子プロセス終了待ち処理
  終了
■ 症状
 ほとんどの場合は、正常に処理が終了するのですが、稀に、子プロ
 セス処理全体で 200~250回程度 mysql_query を呼び出した後、
 mysql_query 処理から戻ってこなくなり、処理が止まってしまいま
 す。
 mysql_query 処理から、戻ってこなくなったSQL文は、以下の通り
 です。
 ・select updated from table_name_1 where code = 98
 ・insert into table_name_2 ( field_name_1,field_name_2,
  field_name_3,field_name_4,field_name_5 ) values ( '1', '', 
  '', 1,'サーバ名:ファイル(aaa.txt)の転送処理をスキップしま
  した。' )
 また、本症状発生中でも、mysqld は、起動したままになっており、
 他のクエリは、実行できる状態です。
 現在は、本症状が発生した場合、親プロセスと、5つの子プロセス
 を全て、kill しています。(mysql の再起動は、行っていません。)
 その後、再度、test.php を実行すると、全ての処理が正常に終了
 致します。
■ 質問内容
 以上のことを踏まえまして、以下の質問をさせていただきたいと思
 います。
 ・本症状(mysql_query 処理から、戻ってこなくなる)と同様の症例
  は、ありますでしょうか。
 ・同様の症例がある場合、本症状を、どのように解消されたでしょ
  うか。
 ・その他、本症状が発生する理由及び、対処策をご存知の方いらっ
  しゃいましたら、ご教授お願い致します。
-> 14110 2007-07-18 18:45 [Koki Takeda <koh@xxx] 稀に mysql_query 処理から戻ってこなくなる 14112 2007-07-18 22:48 ┗["Tetsuro IKEDA" <ikd] 14113 2007-07-19 16:22 ┗[Koki Takeda <koh@xxx] 14114 2007-07-19 16:43 ┗[遠藤 俊裕 <endo@xxxx] 14115 2007-07-19 18:27 ┗["Tetsuro IKEDA" <ikd] 14116 2007-07-19 18:36 ┗[Koki Takeda <koh@xxx] 14127 2007-07-23 21:51 ┗[Koki Takeda <koh@xxx] 14128 2007-07-23 22:19 ┗[遠藤 俊裕 <endo@xxxx]