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

【Linuxサーバ】 大容量ファイル(10MB~200MB)を取り扱うサイト(ディスクへのアクセスが非常に多いサイト)を専用サーバ(Linuxサーバ)にて運営しており、一日に数時間(アクセス集中時の午後9時~午前2時)、Load averageが200以上で、大変重い状態にあります。

状態としては、サーバのLoad averageはいつもは3以下なのですが、突発的に300程度まで上昇し、そのまま数時間200程度を維持し続け、下がるときは一気に下がる状態が続いています。(アップロードしたhot-sanicの週間データをご覧下さい。)

この状況を解決するにはどうすれば良いでしょうか。


サイトはPHP + Perl + MySQLにて構築しています。
一日のページビューは12万PV程度、一日の転送量は500GB程度です。
HDDは40GB程度の余りがあります。

サーバスペックは下記をご覧ください。

Sempron 2600+ / 512M / 70GB / 100Base-TX
Fedora Core 5 / Apache 2

以上、よろしくお願い申し上げます。

* URLのみの紹介はご遠慮ください。

1166004789
●拡大する

●質問者: qwenty
●カテゴリ:インターネット ウェブ制作
✍キーワード:100BASE-Tx Apache Fedora Core HDD Linux
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● Meri
●10ポイント

少しでも負荷を減らすために、

・アクセスが集中している時間に定期実行されているタスクがあれば、そのタスクの実行時間を変更する。

・Apacheのチューンナップを行う

(この辺についてはhttp://www.apache.jp/jdocs/tune/に書かれています)

・MySQLのメンテナンスを定期的に行う

・MySQLをSQLiteなどの「速い」といわれているDBに変更してみる

・PHPやPerlではなく、JavaScriptに書き換えてみる・・(大変そうですが)

・高速なHDDへの乗り換え

などですかね。。。他にもあるかもしれませんし、上に挙げた方法ではあまり効果がないかもしれません。

◎質問者からの返答

ありがとうございます。

もう少し具体的な回答が頂ければと思います。


2 ● furutanian
●20ポイント

アクセスの特性がわからないのでなんともいえませんが、アクセスが量に対しメモリが少なく、ボトルネックになっているかもしれません。現在の情報から言えることはそれくらいですね。

ちなみに、レンタルサーバですか? 回線の帯域は?

sysstat パッケージが入っていなければ入れて、sar 情報を展開すると、ボトルネックを特定することができるかもしれません。


3 ● katsube
●25ポイント ベストアンサー

※何がボトルネックになっているか分からないので想像ですが...。

furutanianさんとかぶりますが、512Mはちょっと少ないですね。

1G?2G程度にすると変わる可能性があります。予算的に余裕があれば積めるだけ積むのが良いです。


サーバの動作が遅くなる原因のひとつに、メモリを使い切ってスワップを使用するというのがあります。こうなるともう最悪なくらい遅くなります。

スワップうんぬん以前に、なるべくHDDへのアクセスを減らし、メモリ上で解決すると格段にパフォーマンスがあがります。Linuxは一度使用したファイルをメモリに空きがあれば、メモリ上にとっておいてくれます。ですので単純にメモリを増設するだけでかなり変わってきます。

またメモリをディスクとして使用できる機能(tmpfs)が最近のLinuxにはついていますので、それを用いるという手もあります。



後はプログラムが動作する環境を軽量化するのも大切です。

Perlはmod_perl化されているでしょうか?PHPはバージョンが5以降、かなり軽くなったと聞いています。バージョンを上げたり、環境を整備されるだけでかなり変わります。


また特定の時間だけ重くなるとのことですが、単純にアクセスが増加しているだけでしょうか?バッチを走らせたり、どこかからアタックをしかけられているなどの要因は調べられたりはしたでしょうか?まずはそこの調査から始められるのが良いかと思います。


4 ● b-wind
●25ポイント

大容量ファイルとの事ですが、それをダウンロードさせるサイトだと考えてよろしいでしょうか?


高負荷の原因によりますが、さし当たっての対処としては以下の2種類が考えられます。

1.回線容量が足りていない場合

1時的に回線容量が足りない場合はサーバー側で大域制限をかけることを検討した方が良いでしょう。

http://d.tir.jp/apache.html

2.サーバースペックが足りない場合

ディスクアクセスやCPU使用率が常に100% で有るなどサーバースペックが足りない場合は Apache のプロセス数に制限を書けたほうが良いでしょう。

http://httpd.apache.org/docs/2.0/ja/mod/mpm_common.html#maxclien...


その他、メモリを追加してキャッシュ機能を搭載する事や、単発で大容量のファイルが多いなら KeepAlive 機能を無効にするなどの対策が考えられます。


あくまで感想ですが、用途にしては HDD と Memory のスペックが足りていないようにも思うので、そのあたりを改善するのも手かもしれません。


5 ● tobeoscontinue
●20ポイント

負荷が集中している時、以外はおおむね、低いのでバード的な問題ではないように思います。

>大容量ファイル(10MB~200MB)を取り扱うサイト

ということでどうしても占有時間が長くなりがちなのでApacheに

トラフィック制御モジュールを導入してみてはどうでしょう。

http://www.atmarkit.co.jp/flinux/rensai/apache2_08/apache08c.htm...

http://www.atmarkit.co.jp/flinux/rensai/apache2_08/apache08d.htm...

実際、導入したことが無いので申し訳ないのですが、

htmlファイルを優先する。IPアドレスごとにダウンロードファイル数を制限

するなど、一気にダウンロードするようなソフトには有効で応答性も確保できるように思うのですが。


逆にダウンロードする時間が長くなるなどクライアントには好くないことでトレードオフが難しいですが、数100MBでは数分かかるでしょうからもう少し長くなっても大きなサービス低下にはないないように思います。

関連質問


●質問をもっと探す●



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