[前][次][番号順一覧][スレッド一覧]

mysql:14128

From: 遠藤 俊裕 <遠藤 俊裕 <endo@xxxxxxxxxx>>
Date: Mon, 23 Jul 2007 22:19:44 +0900
Subject: [mysql 14128] Re: 稀にmysql_query処理から戻ってこなくなる

遠藤です。

まぁ、仕様って話じゃないんでしょうか。

だって、道路が一本しか無いのにそこを複数台の車が通ろうと
してるんですよね?
たまにぶつかったり事故ったりしませんか?

Mon, 23 Jul 2007 21:51:56 +0900 に、
Koki Takeda <koh@xxxxxxxxxx> さんは書きました:

> 竹田です。
> 
> 子プロセスでそれぞれ新規にconnectして、検証してみました。
> 100回以上、検証してみましたが、すべて正常に処理が終了致しまし
> た。
> 
> 遠藤様、池田様、重ねまして御礼申し上げます。
> 
> そこで、更に質問で恐縮なのですが、子プロセスでそれぞれconnect
> しないといけないというのは、MySQLのバグではなく、仕様というこ
> とでよろしいでしょうか。
> また、それが仕様だとして、mysql_query 処理から戻ってこなくなる
> のも仕様なのでしょうか。
> 
> 自分でいろいろ検索してみましたが、
> http://php.mirror.camelnetwork.com/manual/ja/function.pcntl-fork.php
> の User Contributed Notes によると、PHP の仕様なのかなという気
> もしますが。
> 
> 
> 
> On Thu, 19 Jul 2007 18:36:23 +0900
> Koki Takeda <koh@xxxxxxxxxx> wrote:
> 
> > 竹田です。
> > 
> > 遠藤様、池田様、情報並びにご提案ありがとうございます。
> > 
> > 子プロセスでそれぞれconnectして、検証してみたいと思います。
> > 検証には、時間を要する予定ですので、結果につきましては、改めて
> > ご報告致します。
> > 
> > 
> > On Thu, 19 Jul 2007 18:27:26 +0900
> > "Tetsuro IKEDA" <ikdttr@xxxxxxxxxx> wrote:
> > 
> > > 池田です。
> > > 
> > > 親プロセスで接続したセッションをフォークで生成した
> > > 子プロセスで使いまわす、というのはMySQLクライアント
> > > サーバプロトコルが正常に処理されなくなるのでよくない
> > > という話を聞いた気がします。
> > > 
> > > 子プロセスでそれぞれconnectしないといけない気が・・・。
> > > 
> > > 07/07/19 に 遠藤 俊裕<endo@xxxxxxxxxx> さんは書きました:
> > > > 遠藤です。
> > > >
> > > > 同じセッションにマルチプロセスから同時にクエリーを発行し
> > > > ても問題ないんでしたっけ?
> > > >
> > > > 子プロセスをフォークしてからその子プロセスで real_connect
> > > > して発行したらどうなりますか?
> > > >
> > > > 全くとんちんかんな事言ってたらすんません。
> > > >
> > > > Thu, 19 Jul 2007 16:22:03 +0900 に、
> > > > Koki Takeda <koh@xxxxxxxxxx> さんは書きました:
> > > >
> > > > > 竹田です。
> > > > >
> > > > > 池田様、ご連絡ありがとうございます。
> > > > >
> > > > > 説明が不足しておりまして、申し訳ございませんでした。
> > > > > "show processlist"は、確認済で、見て見ましても、何も実行されて
> > > > > いない状態になっているのです。
> > > > > 従いまして、原因を特定できずに、困っている次第です。
> > > > >
> > > > >
> > > > > On Wed, 18 Jul 2007 22:48:51 +0900
> > > > > "Tetsuro IKEDA" <ikdttr@xxxxxxxxxx> wrote:
> > > > >
> > > > > > こんばんは。池田です。
> > > > > >
> > > > > > "show processlist"を見れば下記症状が出ていると思われる
> > > > > > 接続の状態を調べることができると思います。
> > > > > >
> > > > > > 07/07/18 に Koki Takeda<koh@xxxxxxxxxx> さんは書きました:
> > > > > > > はじめまして。竹田と申します。
> > > > > > >
> > > > > > > この度、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 処理から、戻ってこなくなる)と同様の症例
> > > > > > > は、ありますでしょうか。
> > > > > > >
> > > > > > > ・同様の症例がある場合、本症状を、どのように解消されたでしょ
> > > > > > > うか。
> > > > > > >
> > > > > > > ・その他、本症状が発生する理由及び、対処策をご存知の方いらっ
> > > > > > > しゃいましたら、ご教授お願い致します。
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > > --
> > > > えんどう
> > > > endo@xxxxxxxxxx,endo@xxxxxxxxxx
> > > >
> > > >
> > > >
> > 
> > 
> 
> 
> 

--
えんどう
endo@xxxxxxxxxx,endo@xxxxxxxxxx


[前][次][番号順一覧][スレッド一覧]

     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]