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

mysql:2153

From: "N.Yoshida" <"N.Yoshida" <yosh_no@xxxxxxxxxx>>
Date: Fri, 02 Jun 2000 11:39:40 +0900
Subject: [mysql 02153] mysql デーモンの負荷テストで不可解な現象

  吉田です。
  MySQLを使用したシステムを本運用しようとしてMySQLデーモンの負荷テスト
をしていたところ次のような現象が発生し困っています。何か解決のヒントが
あれば教えていただきたいと思っています。

【環境】
         DBサーバ                         APLサーバ
    ┌────────┐             ┌────────┐
    │                │             │                │
    │    MySQL←───────────テストスクリプト│
    │                │             │                │
    │                │             │                │
    └────────┘             └────────┘

  (DBサーバ)
   OS     Slackware 3.5ベースのLinux kernel(2.2.15)
   MySQL  3.22.32(3.22.30で発生したのでエンハンスしたが同じ現象発生)
   Linuxthread-0.6
   Data-Dumper-2.09
   DBI-1.13
   Msql-Mysql-modules-1.2209(1.2214でも同じ現象発生)
   Perl5.005_03 + jperl5.005_03-990403.pat

  (APLサーバ)
   OS     TurboLinux 6.0ベースのLinux kernel(2.2.15)
   他はDBサーバと同じ

【現象】
     MySQLへコネクトし、テーブルに対してselect *をかけて結果をフェッチ
   しディスコネクトする処理を無限に繰り返すPERLスクリプトを6多重で実行
   したところ10分程度でMySQLデーモンが落ちた。(アベンドまでの時間はさ
   まざま) 
     傾向としては多重度を上げればデーモンアベンドする時間が短くなるよう
   です。

     Topでmysqldを見ているとSIZEの値が徐々に増加し、4XXX位になるとデー
   モンがアベンドするようにみえます。デーモンのメモリ上のデータが壊れて
   起きているのではとも推測できますが....(SIZE値はテーブルでさまざま)

     デーモンアベンドに際して、クライアントプログラムではfetchやexecute
   がエラーとなります。(次がエラーメッセージ)

  -----------------------------------------------------------------------
  DBD::mysql::st fetchrow_array failed: fetch() without execute() 
       at dummy.pl line 47.
  または
  DBD::mysql::st execute failed: Lost connection to MySQL server during query
       at dummy.pl line 46.
  または
  DBD::mysql::st execute failed: MySQL server has gone away 
       at dummy.pl line46.
  -----------------------------------------------------------------------


==【参考】=====(スクリプト始まり)======================================
#! /usr/bin/perl -Lsjis
#--------------------------------------------------------------------
#   DBサーバ負荷耐久テスト                              dummy  .pl 
#     ダミー検索プログラム                    最終更新日  00/05/29   
#--------------------------------------------------------------------
    use DBI;
    use FileHandle;
    $dbname    = "bics";                          # MySQL
    $hostname  = "fz002086";


    $pid    = $0;                                 # PROGRAM-ID
    $num    = '^[0-9]+$';                         # 文字列の全てが数字
    $otfl1  = "$$.lst";                           # 出力ファイル名

    open (OT,">$otfl1");
    OT->autoflush(1);
    for(;;) {
      $dbh     = DBI->connect("DBI:mysql:$dbname:$hostname","root","");
      $dbh || die "connect err :$dbname:$hostname";
      $fields  =  "SYSYCD";
      $cond    =  "where SYSLVL = '2'";
      $state   =  "select $fields from SZK $cond";

      $sth = $dbh->prepare($state) || die $dbh->errstr;
      $sth->execute || die $sth->errstr;
      while (@SYSYCD = $sth->fetchrow_array) {  #検索:約120レコード◆
          &GetYMY($SYSYCD[0]);
#         sleep(5);
      }
      $sth->finish;
      $dbh->disconnect;
}
    close(OT);


sub GetYMY   {   #
    my $SYSYCD  = shift(@_);
    $SYSYCD     = substr($SYSYCD, 0, 6);
    my $dbh     = DBI->connect("DBI:mysql:$dbname:$hostname", "root", "");
    $dbh || die "connect err :$dbname:$hostname";
    my $fields  =  "*";
    my $cond    =  "where SEKACD like '$SYSYCD%'";
    my $state   =  "select $fields from YMY $cond";
    print (OT "$state\n");
    my $sth = $dbh->prepare($state) || die $dbh->errstr;
    $sth->execute || die $sth->errstr;
    while (@YMY = $sth->fetchrow_array) {   #検索:数100〜1000レコード◆
      printf("(@YMY)\n");          #perl dummy3ny.pl>/dev/null&で起動◆
    }
    $sth->finish;
    $dbh->disconnect;
}
=============(スクリプト終わり)=========================================



-------------------------------------------------------------------------
  吉田 伸次(N.Yoshida) E-mail:yosh_no@xxxxxxxxxx
                       nifty :TCN00171@xxxxxxxxxx
-------------------------------------------------------------------------

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

->    2153 2000-06-02 11:39 ["N.Yoshida" <yosh_no] mysql デーモンの負荷テストで不可解な現象
      2154 2000-06-02 17:32 ┗[<takeshi@xxxxxxxxxx>]                                       
      2156 2000-06-02 20:12  ┗["N.Yoshida" <yosh_no]                                     
      2158 2000-06-02 22:43   ┗[<takeshi@xxxxxxxxxx>]                                   
      2163 2000-06-05 14:58    ┗["N.Yoshida" <yosh_no]                                 
      2164 2000-06-05 16:14     ┗[Seiji Tateyama <tate]                               
      2165 2000-06-05 19:41      ┗["N.Yoshida" <yosh_no]                             
      2166 2000-06-05 21:44       ┣[<takeshi@xxxxxxxxxx>]                           
      2188 2000-06-10 19:27       ┃┗["N.Yoshida" <yosh_no]                         
      2167 2000-06-06 01:42       ┗[tateyan <tateyan@xxx]                           
      2168 2000-06-06 10:22        ┗["N.Yoshida" <yosh_no]