• ベストアンサー

サーバ状況の見方と対策方法をどうすべきか?

CentOS 4を導入してMySQLのインデックスを作っていますが、 サーバが動かなくなってしまい、どうしたらいいか困っています。 メモリを足すだけでよいのか? CPUを上げた方がよいのか? ハードディスクを取り替えた方がよいのか? どう見て、どう動けばよいのでしょうか? よろしくお願いします。 # vmstat 1 10 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 2 241628 872 1144 487020 19 8 1852 1270 5 1 12 2 45 41 0 1 241628 1616 1140 486428 0 0 3680 7084 1223 249 4 2 0 94 0 2 241628 2144 1140 485868 0 0 588 0 1153 315 6 0 0 94 0 1 241628 1936 1140 486120 0 0 556 0 1145 291 6 1 0 93 0 2 241628 1512 1108 486584 0 0 1192 0 1177 149 5 1 0 94 1 0 241628 2580 1084 485492 0 0 1332 2684 1205 247 3 4 0 93 0 2 241628 1656 1076 486400 0 0 1564 0 1191 153 4 1 0 95 0 2 241628 1128 1076 486920 0 0 1828 24 1214 95 0 1 0 99 0 2 241628 1256 1056 486856 0 0 1048 0 1176 176 3 1 0 96 0 2 241628 808 1052 487304 0 0 3764 0 1206 252 4 1 0 95 # top top - 11:52:27 up 9 days, 3:07, 1 user, load average: 1.83, 1.69, 1.66 Tasks: 49 total, 2 running, 47 sleeping, 0 stopped, 0 zombie Cpu(s): 0.7% us, 0.3% sy, 0.0% ni, 0.0% id, 98.0% wa, 1.0% hi, 0.0% si Mem: 507484k total, 506012k used, 1472k free, 1456k buffers Swap: 1052248k total, 241644k used, 810604k free, 485980k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21899 mysql 15 0 1257m 332m 332m S 1.3 67.2 243:22.41 mysqld 1 root 16 0 3252 88 68 S 0.0 0.0 0:01.17 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.13 ksoftirqd/0 3 root 5 -10 0 0 0 S 0.0 0.0 0:00.04 events/0 4 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 khelper 5 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid 20 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0 41 root 13 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0 21 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khubd 40 root 15 0 0 0 0 S 0.0 0.0 12:31.75 kswapd0 188 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kseriod 296 root 15 0 0 0 0 D 0.0 0.0 2:40.01 kjournald # free total used free shared buffers cached Mem: 507484 505440 2044 0 1372 485748 -/+ buffers/cache: 18320 489164 Swap: 1052248 241640 810608

質問者が選んだベストアンサー

  • ベストアンサー
noname#246547
noname#246547
回答No.2

随分前の質問なので返答来るかな・・・ データファイルはinnoDBでしょうか? 初期サイズは? 自動拡張(autoextend)設定していますか? インデックスを貼るテーブルのレコード件数は? 1レコードのサイズは? 搭載メモリが512Mに対し約490M空いてますね。 物理メモリ量は問題ないようですが、 Mysqlのプールサイズはいくつなんでしょう? CPUは98%がI/O待ちなので、CPUも遊んでいます vmstatを見る限り、I/O待ちの平均が41%,直近の状態が93%前後なので、 ブロックデバイスへのアクセスに時間がかかっています。 ブロックデバイスからの読み込みが1.2Mbyte~3.7Mbyte/s 書き込みは2.7Mbyte~7.1Mbyte/5s発生しています。 設定ファイル情報が無いのでなんともいえませんが、 indexを貼るテーブルサイズとプールサイズ等がアンバランスな気がします。 メモリ(プールサイズ)が足りなくて全てHDD上で操作している感じ? あるいはInnoDBの初期サイズが小さくてindexは貼ることで拡張しまくってるかもしれない・・・

oiranoinu
質問者

お礼

遅くなりました。 どうもメモリが足りないような気がしてきました。 インデックス作成にメモリじゃ足りないからHDDを使うとか… でも物理メモリ量が少ないのはおかしい気がしますが。 1レコードのサイズは10kbくらいだからそれほど負担にならないけど、 PRIMARYKEYのサイズは3GBなので、メモリ内に収まりません

その他の回答 (1)

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.1

僕の印象として・・・ vmstat: siとsoが0なので、メモリ容量は問題なさそう       biが大きいのでディスクアクセスが多い top: ロードアベレージが1を超えているので高い メモリが512MBと心もとないのですが、ロードアベレージの高さは ディスクアクセスによるものらしいです。

oiranoinu
質問者

お礼

遅くなりました。 メモリ使わずにHDDとCPUで作業することあるのですか? この辺の仕組はよくわからないので、正直どうなってるかわかりません。

関連するQ&A