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

mysql:6138

From: <ml_mysql@xxxxxxxxxx>
Date: Fri, 13 Sep 2002 17:30:29 +0900
Subject: [mysql 06138] Re: CGI::SpeedyCGI と Mysql  との組み合わせ

山下様

早速のRES ありがとうございます。

At 16:30 02/09/13 +0900, you wrote:
>お世話になっております。
>
>> #!/usr/bin/perl --->  #!/usr/bin/speedy -- -M100 -t600 -r500
>> に変更し、
>> スクリプトの最初に
>> use CGI::SpeedyCGI;
>> my $sp = CGI::SpeedyCGI->new;
>> undef ($hogehoge);
>データベース入出力関連の処理には手を加えていないようですので
>Speedyネイティブな問題かもしれません。
>
>> 実際に稼動させた所、以下のエラーがApache のエラーログに
>> 記録されています。
>> Issuing rollback() for database handle being DESTROY'd without explicit
>> disconnect() at /var/www/hogehoge.pl line 758.
>Apacheでこのようなエラーが発生したとき、
>データベース、テーブル、カラムは何らかの損傷を受けましたか?

損傷は受けてないようです。

>または、
>追加したはずのレコードが存在しなかったり、
>更新したはずのレコードが変更されてなかったり、
>削除したはずのレコードが残っていたりしましたか?
>確認してみてください。

このスクリプトはフォーム  --> 起動  -->DBの検索(ユーザー認証) -->
DBの検索(データー) --> 検索結果をブラウザーに表示 --> DBへデーターの追加
という動きを行います。

エラーは、最初のDBの検索部分で発生しています。
検索結果をブラウザーに表示 が正常にされたのか、
DBへデーターの追加 自体が行われたかは不明です。

エラーが発生した時点は、不特定の方がフォームに記載し、送信ボタンを押した
(約1日当たり1万回送信ボタンを押された、このうち、20回、エラーが記録された)

エラーが出たときのデーターがきちんと記録されたかどうかは、
調べていません、というよりも、データーが多すぎて簡単には調べようが無い
というところです。

>
>> 頻度は 約10000回動いて20回ほどエラーが記録されています。
>> デバッグの進め方を教えていただければ、
>CGIを10000回実行したうち20回エラーが発生したのか、
>10000回ループさせたうち20回エラーが発生したのか、
>100回回るループを2重にネストさせ合計10000回処理を
>実行させた時に20回エラーが発生したのか、
>もしくはそれ以外のケースなのかが良く分かりません。

CGI を10000回実行させた時に20回エラーが記録されます。

>それから、Speedyからperlに戻して同様に10000回動かして
>エラーが発生するかどうか確かめた方がいいと思います。
>本当にSpeedyのせいでエラーが発生しているのか、
>他の原因でエラーが発生しているのかが分かるからです。
>

はい、怖くて、現在は戻しています。
戻し方は、
#!/usr/bin/speedy -- -M100 -t600 -r500 --->  #!/usr/bin/perl
に戻し、
# use CGI::SpeedyCGI;
# my $sp = CGI::SpeedyCGI->new;
をコメントアウトし、
undef ($hogehoge);
の初期化はそのままにしています。
この状態に戻して1日たちますが、エラーは記録されていません。


>> CGI::SpeedyCGI を使った場合のMysql で
>> 一般的な注意点はあるのでしょうか?
>具体的なケースにおける注意点についてはレスが付くと思います。
>一般的な注意点については書籍やWebサイトが紹介される
>と思います。
>
>> また、せっかくCGI::SpeedyCGIを使っていますので、
>> データーベースのconnect を毎回しないでよい方法は?
>石川様がお考えになっている「毎回」がどのような「毎回」で
>あるかがはっきりすれば、レスが付くと思います。
># 例えば、「セッション毎」とか「ページ毎」など。
>
同一スクリプトが1日に1万回程度立ち上がり、
時間帯により集中しますので、
一度スクリプトが立ち上がったときにDBにコネクトを行い、
後は-t600  あるいは -r500 で一旦終了するまでは
connect しっぱなしにしておけば、スクリプトが稼動するたびに
connect という重たい部分を走らなくてすみそうな気がしますが。

よろしくお願いします。

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

      6136 2002-09-13 15:24 [<ml_mysql@xxxxxxxxxx] CGI::SpeedyCGI と Mysql  との組み合わせ
      6137 2002-09-13 16:30 ┗["Takashi Yamashita" ]                                       
->    6138 2002-09-13 17:30  ┗[<ml_mysql@xxxxxxxxxx]                                     
      6139 2002-09-13 18:00   ┗["Takashi Yamashita" ]                                   
      6143 2002-09-14 09:33    ┗["KAWAI,Takanori" <GC]