さくらVPS、2GBのHDDと1GBのSSDのパフォーマンスについて


現在、さくらVPSの1GBで短縮URLサービスを運営しています

最近アクセスが増えて重くなってきたので、VPSの2GBかSSDの1GBに乗り換え検討しているのですが、

SQLからUNIQUEなIDに対応するURLを引っ張ってくるサービスの場合は、メモリが多いHDDとメモリが少ないSSD、どちらがいいのでしょうか。

さくらインターネットでは同メモリ容量のHDDに比べてSSDは従来比7倍のストレージ性能だと宣伝していますが、

メモリが多いHDDと比較した場合、どちらがいいのか参考になる資料が見当たりませんでした。

現在の環境はCentOS6+Nginx+PHP+MySQLです。

専門家の方の意見をお待ちしています。よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/02 00:35:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント50pt

ただしVPS環境なので、どの位の期間キャッシングが保持できているかは、環境によって異なるので何とも言えません。2GBのメモリでアクティブなサーバが5台程度が同居しているようですと、キャッシュには残らないと考えてください。
これはディスクアクセスについても言えることです。他のアクティブなサーバがディスクI/Oを頻繁に行っているとすると、HDDでもSSDでも速度は稼げません。

Nagiosで監視されているようなので、まずはどのクエリーで負荷がかかっているのか分析してください。クエリーの改善ないしはデータベースの最適化を検討した方が良いと思います。
それも難しい場合は、専用サーバへの移行を検討してください。

id:psne No.2

回答回数605ベストアンサー獲得回数334

ポイント50pt

まずはさくらVPSの構成など整理を。

  • 数十台同居している計算になるが、未使用分のメモリをディスクキャッシュに割り当てる
  • IOPSは1500程度

少し古いですが、さくらのVPSの構成を妄想してみました。 - とあるプログラマの日記 @s025236記事を参考にした纏めがあります。
遊んでいるメモリをキャッシュに使うので便利ですね。

丁度さくらVPSの2GBプランを契約しているので、fioにて調べてみました。

Starting 1 process
random-read: Laying out IO file(s) (1 file(s) / 128MB)
Jobs: 1 (f=1): [r] [91.7% done] [13442K/0K/0K /s] [3360 /0 /0  iops] [eta 00m:01s]
random-read: (groupid=0, jobs=1): err= 0: pid=22110: Sun Feb 24 07:39:27 2013
  read : io=131072KB, bw=11976KB/s, iops=2993 , runt= 10945msec
    clat (usec): min=131 , max=184961 , avg=328.08, stdev=1272.51
     lat (usec): min=131 , max=184962 , avg=328.57, stdev=1272.52

random-readでは、IOPSは3000近いですね。
ちなみに8kで行うと、

random-read: (groupid=0, jobs=1): err= 0: pid=22149: Sun Feb 24 07:40:42 2013
  read : io=8192 B, bw=8000.0KB/s, iops=2000 , runt=     1msec
    clat (usec): min=369 , max=422 , avg=395.50, stdev=37.48
     lat (usec): min=370 , max=423 , avg=396.50, stdev=37.48

このようになります。(8Kbなのできちんとデータが出ません。)
※他社のVPSについては割愛します。

以上を踏まえて、まずは何処が原因であるかを判断する必要があります。

身も蓋もない話になりますが、もしかすると、URLの管理は現状通りSQLにて、実際のURL変換はPHPにてファイルを読み込みとするとパフォーマンスが上がるかもしれません。

id:taroe No.3

回答回数1099ベストアンサー獲得回数132

ポイント50pt

>メモリが多いHDD
こちらが良いと思います。

実際には、現状どういう感じの負荷がかかっているかを調査されるべきかと思います。

また、MySQLの設定によりますが、データはメモリーにある程度キャッシングされるはずです。

重いのは、1秒あたりのリクエスト数が増えてるからではないか?と思います。
その場合、どっちにしてもまずはメモリーを増やさないと、ダメだと思います。

たぶんCPU負荷がかかっている状態なのではないでしょうか?
この場合は、メモリーを増やすべきだと思います。

>SQLからUNIQUEなIDに対応するURLを引っ張ってくるサービスの場合

逆に、この程度の処理にSSDの性能が必要かどうかが逆に疑問
実際には、メモリーが1Gでは、MySQLを使う環境としては少ない方なので、メモリーを増やしたほうがDB的にもよさそうに思う。

id:boost_beast No.4

回答回数785ベストアンサー獲得回数31

ポイント50pt

http://vps.sakura.ad.jp/ssdplan.html

使い道によって変わりますね。

>SSDプランは高いIOPSが特長ですので、データベースなど高いストレージ性能が必要な場合などにおすすめです。

とのことなので質問者さんの状況にあったほうを選べばいいと思います。

  • id:pmakino
    どちらがより適するか(またはどちらも適さないか)を判断するには、まず現在のボトルネックが何なのかの情報が必要です。
    sysstat(sar)やiostat、top等で各種統計値を確認し、現在負荷が高い要素がどこにあるのかを確認してください。
    不足しているのはメモリなのでしょうか? 実はメモリじゃなくてCPUだったりすると、メモリの増量もストレージのSSD化もほとんど無意味で、CPUコア数の方がキモになってくるかもしれません。

    また、MySQLのメモリ周りの設定値はどう設定され、実データ量はどのぐらいなのでしょうか。
    もしデータが全てメモリに乗るほど少なかったとしたら、SSDにしてもほとんど恩恵は受けられないだろうと予測が立ちます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません