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]