Negitaku.org Blog

eスポーツ, FPS, ゲーミングデバイス情報を紹介するサイト『negitaku.org』管理者のブログです

Negitaku.org のデータベースサーバーをさくらの VPS 4G に変更

Negitaku.orgNegitaku.org のデータベースサーバーを『さくらの VPS 4G』に変更しました。

理由は、最近サーバーの DB レスポンスが非常に悪くなる時があり、 酷い時だと数時間ほど閲覧出来ないような状態になってしまうため データベースサーバーを変更することにしました。

Before (PowerEdge 1750)

  • CPU : Xeon 2.4Ghz デュアル
  • メモリ : 1 ギガ
  • HDD: 36 ギガ

After (さくらの VPS 4G)

  • CPU : 仮想 4 Core
  • メモリ : 4 ギガ
  • HDD: 120 ギガ

DB サーバーのメモリは 2 ギガあると思い込んでいたのですが実際には 1 ギガしかありませんでした。このサーバーを購入した時にブログに書いていましたが全く記憶にありませんでした

サーバー変更を決意するまでにやった事

自分は作りたいものがあって PHP のプログラムを勉強して、 それをホスティングするのにレンタルサーバーでは無理になって 専用サーバーを建てるしかなくなり、 教えていただいたり手伝っていただいたりしながらこれまで運用してきました。

専門的な知識が全くないのでトラブルが起きるとどうして良いのかわからなく、 いままで闇雲にいろいろと対策をしていました。

munin をサーバーにインストール

今回は原因が全く突き止められないのでとりあえず munin という 監視ツールをサーバーに入れてみることにしました。

Debian だと aptitude コマンドから一発で入るので非常に楽でした。 そこから設定してちゃんと動くようになるまでには時間がかかりましたし、 これでサーバーが動かなくなったらどうしようとびびりながらやったのですが。

しばらくサイトの状況と munin が吐き出すグラフを見ていると 原因が何となくわかってきました。

MySQL

サイトの状況とグラフを照らし合わせると、 「MySQL threads」の数値が高くなっている時が 負荷が高く閲覧出来ない状態である事がわかりました。 そこで『「MySQL threads」が高くなりすぎてはいけない』のだと推測しました。

ここからは MySQL の設定を Google で検索していろいろと変更しました。 MySQL は全くチューニングされていないデフォルトに近い状態だったので、 値を変更するとそれなりにパフォーマンスがアップするのですが、 やはりしばらくすると問題が発生していました。

ここら辺で、クランにいるネットワークエンジニアや プログラマーをしているメンバーに相談しながらいろいろと値を変更するようになりました。 一番効果があったのは、MySQLの「key_buffer」のサイズを上げることでした。

この数値ですが、デフォルトがおそらく 32M なのですが、 次第に数値を上げて 600M を割り当てたときが一番安定しました。 メモリ 1 ギガ搭載のサーバーなので 6 割を割り当てていることになります。 ですが、これでもダメになったので、いままで 32M で動いていたのが ミラクルでしかないと思いました。

600M の割り当てでも遅延が発生する事が確認されたので、 これはもうメモリを増やすしかないと判断しました。

さくらの VPS 4G を契約

メモリが足りないとわかったところでまず考えたのが 現状のサーバーにメモリを足すことなのですが、 サーバーは自分一人では行けない遠隔地にホスティングされていますし、 震災が起きて交通がマヒしていたりお世話をお願いしている エンジニアさんにお手を煩わせるのもなんですし、 なんだかんだで実現するにはかなりの時間がかかってしまいそうでした。

現状のサーバーをさくらインターネットがはじめた「さくらの VPS」に 移行しようと 1 月くらいから作業を進めていたのですが、 いつのまにやらその上位プランが開始され、 最大 8 ギガのメモリを積んだ VPS を利用出来るようになっていました。

そのサービスが開始される前に、さくらの VPS にサイトを移行しようと 『さくらの VPS 512』を二台契約していたので、 それなりにパフォーマンスや使い方も把握していました、

そこで、『さくらの VPS 4G』を借りるのが一番早いのではないかと思いすぐに契約しました。 現状のスペックでサイトが維持出来ないので実際は『さくらの VPS 512』では 話にならない事がわかったので後に 2 台とも解約しました。

サーバーセットアップ

いままでそれなりにサーバーをいじっているので最低限くらいの事は自分で出来ます。 デフォルトの CentOS から Debian に OS を変更。 MySQL や必要なプログラムをインストールまでは自分でやって わからないところはお世話していただいているネットワークエンジニアの友人に 確認していただいて移行が出来るようにしました。

そして、データベースを切り替えた後のパフォーマンスが以下になります。

MySQL

MySQL threads」が安定したり高くなったりという状態になりました。 MySQL のクエリー処理アベレージは、変更前からかなりアップしました。

一方で、Web 本体となるサーバーの負荷がかなり高くなってしまいました。 こちらについては、いろいろと調査して Apache の設定を変更したり、 プログラムで余計な処理をしてしまっている部分を修正することで それなりの解決が出来ている状態です。

メモリ使用状況(旧) 旧 DB サーバー

メモリ使用状況(新) 新 DB サーバー

とりあえず、現状は「表示に数秒かかる場合もあるけど、表示されないという事は無い」 というような状況かと思います。

「閲覧することが出来なくなってしまうという状況を回避したい」と思っていたので、 とりあえず、今回のサーバー変更は成功だと個人的には思っています。

使用しなくなった旧 DB サーバーを memcached サーバーにしようかと思ったのですが、 本体のサーバーに必要なプログラムを入れていると、 コアっぽいプログラムをアップデートしろと言われて よくわからないので中断している状態です。

現状それなりに見れているので、次に困ったら何とかしようという感じです。

とりあえずそんな感じということで。

※よくわかっていないので意味不明なことを書いているの可能性があります