人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

専用サーバーでサイトを運営しています。
最近サーバーがよくダウンする感じです。

vmstatで監視すると
不定期で「b」が膨れ上がり
それに伴いloadaverageも膨れ上がり
最終的にサーバーがダウンしてしまいます。

「b」がふくれあがる原因はmysqlであることは確認していて
mysqlまわりを見直せ!というのはわかるのですが
以前借りていたサーバー(VPS)ですと特にダウンすることもなかったので
なぜ新しく借りた専用サーバーだとダウンまでいってしまうのかと
疑問が生じています。

例えばvmstatの「b」の上限を制限するとかで
このダウンを回避する方法があったりすんでしょうか?
そしてその回避方法が紹介されているURLなどご存知でないでしょうか?
その他に「b」の上昇をストップさせる方法などないでしょか?

よろしくお願いいたします。

●質問者: akahoshitakuya
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MySQL URL VPS サイト サーバー
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● pahoo
●19ポイント

一般的に b の値が高いのは、I/O待ちをしているプロセスがたくさんあるということを意味します。

bi/bo の値も確認してください。これらも大きいと、ハードディスクの読み書きが頻発している状態にあります。


原因として考えられることは

などです。

◎質問者からの返答

ありがとうございます。

そして説明不足でした。

http://php.y-110.net/wiki/index.php?%A5%B5%A1%BC%A5%D0%BF%C7%C3%...

↑ここと同じ症状です。

「# 他のデーモンなどが頻繁にディスクアクセスしている」

こちらですが、mysqlの書き込みor読み書きだと思うんですよね。

mysqlのプロセルをkillすると「b」の値が急激に下がります。

この「b」を一定の値で制御できないんですかねー

メモリを増やすべきか・・。


2 ● b-wind
●19ポイント

こちらですが、mysqlの書き込みor読み書きだと思うんですよね。

mysqlのプロセルをkillすると「b」の値が急激に下がります。

この「b」を一定の値で制御できないんですかねー

ディスクのI/O 待ちを制御するって事は、MySQL が受け付けるコネクションの量を減らして

処理自体を減らすしかないと思うが。


MySQL プロセスのみが原因でメモリに余裕があるなら key_buffer 等を多めにとれば

アクセス頻度を下げることは出来るかもしれない。


いずれにせよパフォーマンスチューニングの領域だとは思う。

◎質問者からの返答

ありがとうございます。

今は、ちょっとチューニングして、

たまに「b」が10くらいまで上がることがあるんですが

次第に落ち着いて0に戻ります。

これは並んだ行列を捌けているということですよね。

前までは捌く前にどんどん行列ができて

いっぱいっぱいになる。

コネクションを減らすということは

行列に並ぶもの自体を減らすということですよね。

sqlの見直しがひつようなのかな。


3 ● あひる
●18ポイント

DBMSに対するアクセスに対してデッドロックを起こしているのではないでしょうか。それによって資源が枯渇している可能性が高いと思います。

◎質問者からの返答

ありがとうございます。

「デッドロック」

http://dev.mysql.com/doc/refman/4.1/ja/innodb-deadlocks.html

この辺ですかね。


4 ● pahoo
●18ポイント

#1のコメントに対して:

limits.confを書き換えることで、利用できるリソースを制限することはできますが、まずは#2さんの回答通り、MySQL のチューニングを試みるべきでしょう。

そもそも MySQL のみでそれだけのディスクI/Oを要求しているならば、それだけの処理をしているということなので、それを制限してしまうと、正常にトランザクション処理できなくなります。


ただし、以前のサーバと比較して、メモリ容量が極端に小さいようでしたらメモリの増設をお勧めします。


回答回数上限になりましたので、これにて失礼します。

◎質問者からの返答

ありがとうございます。

以前のサーバーはVPSでメモリ2G。

今のサーバーは専用で1Gです。

1G少ないんですが

専用で使えるんで大丈夫かなーとおもってたんですが

もしかしてこの考えが甘かったのかな?

と思ってきました。

※VPSの2GはVPS利用者間で2Gを共有しているんですよね?


5 ● pahoo
●18ポイント

回答回数上限設定を変更していただいたので、#4のコメントに回答します。


ご利用のOSも分かりませんし、MySQLにどのような処理を行わせているのか分からないので何とも言えませんが、まず、下記サイトを参考に、どのくらいのメモリ量が必要なのか計算してください。

これらのパラメータの変更が可能なら、まず、チューニングを試みてください。

チューニングができないようなら、メモリを増設してください。32bit Linux であれば、MySQL は4Gバイトまで対応します。


VPSの2GはVPS利用者間で2Gを共有しているんですよね?

そうですが、同時にメモリ空間を使い切ってしまうことはないと思うので、各々のユーザーに2Gバイトを割り当てているのではないでしょうか。

ただし、VPSと現在の専用サーバのOSが違うとすると、一概に比較することはできません。同じLinuxでもディストリビューションや走っているデーモンが異なれば、利用可能なメモリ量は変わってきます。

◎質問者からの返答

ありがとうございます。

参考になります。

VPSにメモリのことを問い合わせましたら

2G共有で、あまりにも多く使うと500Mに制限されるという話でした。

また現在の専用のOSはCentOS 5 です。

VPSの時のOSは

ゲストがRed Hat Enterprise Linux 3.0です。

ホストがRed Hat Enterprise Linux 4.0です。

vmstat 1

で監視しているんですがいつもは0で

たまに1、2が出てきます。

この時は安定しますね。

でたまに10近くまで上がって

ここからまた0に戻るときもあるんですが

ずーっと上昇し続けるときがあります。

そうなると手がつけられなくなるので

mysqlのプロセスをkillすると「b」が急激に下がり

安定します。

いろいろチューニングしてみます。

ありがとうございます!


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ