サーバーの性能を上げるために自宅でサーバー運用をする方法

このQ&Aのポイント
  • サーバーの性能を上げるために自宅でサーバー運用をする方法を紹介します。Web上でFlashとPHPを利用したサービスを提供する際、訪問者の増加によりページの表示が遅くなることがあります。そこで、今使っているサーバーを拡張することを検討しています。お金に余裕がない場合、安くサーバーの性能を上げるにはCPU、メモリ、HDDなどを拡張する方法があります。また、ハード面だけでなく、ソフト面での拡張方法も考える必要があります。
  • サーバーの性能を上げるためには、次のような方法があります。まず、CPUの拡張により処理能力を向上させることができます。また、メモリの拡張により、同時アクセスや大量のデータ処理に対応できるようになります。さらに、HDDの拡張により、データの読み書き速度を向上させることも可能です。ソフト面では、PHPやデータベースのチューニング方法を活用することで、サーバーの処理速度を向上させることができます。
  • サーバーの性能を上げるためには、ハード面とソフト面の両方を考慮する必要があります。お金に余裕がある場合は、性能の良いPCを導入することができますが、余裕がない場合は安価な方法を選ぶ必要があります。具体的には、CPUの拡張、メモリの拡張、HDDの拡張などを検討することが重要です。また、PHPやデータベースのチューニング方法なども有効な手段です。サーバーの性能向上には、環境やデータベースの組み方によっても差がありますので、指針になるような基準は存在しません。
回答を見る
  • ベストアンサー

サーバーの性能を上げるために

自宅でサーバー運用を行っている者です。 Web上でFlashとPHPを利用したサービスを行っているのですが、最近訪問者 が多く、ページが表示されるまで結構時間がかかってしまいます。 そこで、今使っているサーバー(といってもPCですが)を拡張しようと思って いるのですが、CPUかメモリかHDDか・・・など色々迷っています。 お金があれば性能の良いPCにしてもよいのですが、余裕がないので、安くサー バーの性能を上げようと思ったら、何を拡張すれば良いでしょうか? ハード面だけでなく、ソフト面での拡張方法などあればご紹介ください。 (PHP、データベースのチューニング方法等) 余談・・でもないのですが、このくらいのPCスペックでこのくらいの訪問 者に絶える事ができるといった基準はあるのでしょうか? サービスの形態やデータベースの組み方にもよると思いますが、何か指針 みたいなものがあればご紹介下さい。 ※今の環境を載せておきます。 CPU:Pen4 2Ghz メモリ:756MB HDD:ATA100-7200rpm OS:Linux系 その他:Apache PostgreSQL PHP5 Flash(swf) 長々となりましたがよろしくお願い致します。

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

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

先の返答でDB(PostgreSQL)について触れるのを忘れていましたので追記します。 DBに対してどのようなチューニングを施しているのか、また、どのようなテーブル設計をしているのか、さらに、処理する最大データ量がまったく、表記されていないので、なんとも言えませんが、 経験上、DBまわりでボトルネックとなる可能性が最も高いのは、 Select文の作りの悪さ((1))と、テーブルの正規化(物理設計)((2))です。 個人のサーバでDBMSの設定が悪くて遅くなるのは珍しいと思います。 理由:個人サーバでそこまでDBに負荷をかけれるほどアクセスがあるとは思えない。 で、(1)の件ですが、不必要なテーブルフルスキャンが発生していないか?正しいIndexは使用されているか?実行計画を見て確認してください。次に、PHPの中でループ(for while等)を使用して、SQLを数100回、数1000回実行していないか?実行しているなら工夫して数を減らすべきです。 (SQLのチューニングだけで2時間かかっていたバッチ処理を2分、10時間かかっていたバッチを8分にまで処理時間を縮めたこともあります。) (2)の件ですが、Select文でテーブル結合するときに、無駄に取得行数が増えていないか?ということですが、まぁ、テーブルの正規化ができているかということになります。ただし、頻繁にアクセスするテーブルはあえて正規化をしない(テーブル結合させない)ことで、参照レスポンスを上げることも検討すべきです。 最後に、「余談」についてコメントします。 ちょっと前に、あなたのPCスペックとほぼ同等(OSだけWin2000Server[apache使うならLinuxのほうが速い])で、 ソフトウエアはApache+PHP+MySQLでシステムを構築したことがありますが、100アクセス/sは捌けていました。DBの物理設計が本当に悪かったため、これ以上性能を上げることはできませんでしたが、 OSをLinuxとし、テーブル設計を見直していたら、5000アクセス/sは最低でも捌けたと思います。 PS. 私もLinux+PHP+PostgreSQL+Apacheの個人サーバがあります。 ハードウエアは、MMXPentium 266Mhz + メモリ96M + HDD(80G,ただし、USBが1.0のため遅い)ですが、このマシンをWebだけで性能を引き出そうとすると相当アクセスされないと無理だなぁと感じています。

mttk1238
質問者

お礼

詳細な説明ありがとうございました。大変参考になります。 ハードの性能を上げる前に、ソフト面での最適化を行ってからもう一度調査 を行ってみたいと思います。 1点だけよろしいでしょうか? それほどSQLに詳しくないので、回答で教えて頂いた事をもっと詳しく勉強 したのですが、良いサイトや書籍などはありますでしょうか。 追記で申し訳ありませんが、知っていましたら是非教えてください。

その他の回答 (4)

noname#246547
noname#246547
回答No.5

参考文献の件 お勧めHPを即答出来ないので、 ネットで調べるならば、下記のキーワード(単語の意味がわからなければそれもネットで)で調べてみてください。 「実行計画」、「explain plan」、「オプティマイザ」、「index」 「SQL パフォーマンス」、「SQL チューニング」 理解するポイントは、「実行するSQLの実行計画(explain plan)を見て、 使われるべきインデックスを使用しているか(注:インデックスを使用すると遅くなるケースもある!)」を判断出来るようになることです。 テーブル設計やSQLコーディングがまずかったりすると、 不必要に「FULL SCAN」、「CROSS JOIN」していたりします。 理由:オプティマイザがテーブル設計(具体的にはcreate table,create indexしたテーブル構造)を見て、どのindexが最適化判断できないため。 書籍等ですが、私はOracleのマニュアルをみて知識を吸収したので、 書店で購入できる本を即答出来ません、すみません。 書籍を探すにしても、「実行計画」を詳しく説明している本がいいのではないでしょうか?←結局、最も詳しいのはDBMSのマニュアルなんですけどね。 最後に、PostgreSQLで、SQLの実行計画を表示させるには、 psqlにログインして、コマンドラインから、 explain チェックしたいSQL文; です。 例: farm=# explain select * from testtbl2,testtbl3; Nested Loop (cost=19.90..34969.30 rows=1746000 width=64) -> Seq Scan on testtbl3 (cost=0.00..29.40 rows=1940 width=8) -> Materialize (cost=19.90..28.90 rows=900 width=56) -> Seq Scan on testtbl2 (cost=0.00..19.00 rows=900 width=56)

参考URL:
http://www.google.com/webhp?hl=ja
mttk1238
質問者

お礼

再度ご返答いただきありがとうございました。 教えて頂いた事を参考にして、地道に調査したいと思います。 本当にありがとうございました!

noname#246547
noname#246547
回答No.3

まず、現在どれくらいのアクセス(Kbyte/sec)があるのか、アクセスが集中しているページの転送容量(byte/page)、アクセスが集中しているときの同時接続数(session/sec)が、記載されていないので、原因を即答できませんが、 PCのスペックは十分あると思われ(ただし、同時接続数が著しく多い場合はメモリ不足も考えられる)、 かつ、訪問者が多くなったら遅くなったとのことですので、 Apacheの最大コネクション数を疑ってみてはいかがですか? Apacheのバージョン、プロセスの種類も明記されていないので 、確認すべき変数が異なりますが、 preforkなら、MaxClients workerなら、ThreadsPerChildも。 また、Apacheの処理能力を把握するには、 mod_statusを入れるとよいでしょう。 プロセスの状態(待機中か実行中か)や、処理に費やした時間が、 リアルタイムで把握できます。 あと、ハードのスペックをリアルタイムで知りたいなら、 topコマンドを使うのが手軽でしょう。 cpuの負荷、メモリの使用状況、スワップ状況が把握できます。 最後に、ホームページのアクセス状況を統計的に把握したいのであれば、 webalizer等を導入するといいですよ。

  • precog
  • ベストアンサー率22% (966/4314)
回答No.2

性能チューニングは測定からです。 CPU使用率、Disk使用率、ネットワーク使用率、メモリー使用率を測定し、どこがネックになっているのか調べてください。 どこも該当しない場合は、リソースネック(スレッド制限に引っかかっているか処理がシリアライズされている)可能性があります。

mttk1238
質問者

お礼

お返事ありがとうございます。 確かに測定からですよね。ただ、調査の仕方が分からないので今から調べて みますが、お勧めのツールややり方があればご教授下さい。 (サーバー運用は初心者なのでどう調べていこうか迷っています) アドバイスありがとうございました。

  • cmc32000
  • ベストアンサー率41% (103/251)
回答No.1

Webサーバーとして公開しているのなら、回線の問題でしょう。Webサーバーとして使うPCの性能は大して問題になりません。回線の速度が遅いのだと思いますが?

mttk1238
質問者

お礼

回線ですが、現在光プレミアムを使用しています。 実測で23Mbps程度くらいです。ただ、回線を変えるとなると費用の面でも 大変な出費になります。 回線について少し調べてみたいと思います。 といっても、調べ方が分からないので今から検索してみますが 笑 アドバイスありがとうございました。

関連するQ&A

  • サーバーの性能について

    この度、動画配信用にサーバーを(小規模で事務所に)設置しようと思ってるんですが トップページにアクセスすると自動的に動画が流れる「ストリーミング用サーバー」と 「オンデマンド用サーバー」の2台に分けて設置を考えてるんですが 2台に分けるのは以前1台のサーバーでやっていてよくサーバーが固まることが多かったので(多分オンデマンドのデータHDDが原因かと思い)2台に分けて使おうと思ってるんですが 基本的にPCパーツは性能のいい(CPU、メモリ、HDD等)方がいいんでしょうか?それとも消費電力の少ない性能の低いパーツでも動画配信のサーバーでも長年稼働出来ますか?一応DELLのサーバーを買おうと思ってるんですが(PowerEdgeT100あたりで)やはり値段の高いサーバーのほうが安定して長年使えるんでしょうか?また動画配信ならこのサーバーがいいというのがあれば教えてもらえますでしょうか?  

  • パソコン同士をつなげて性能アップできますか?

    ちょと思ったんですが、ぼろいパソコンを3、4台つなげて ひとつの性能の高いパソコンとして使うということはできますか? 例 pc1: cpu100MHz メモリ100MB HDD1GB pc2: cpu200MHz メモリ200MB HDD2GB pc3: cpu300MHz メモリ300MB HDD3GB をつなげて pc1+2+3: cpu600MHz メモリ600MB HDD6GB みたいな

  • 現在最も高性能なPC

    現在最も高性能なPCはどういったスペックになるのでしょうか?また、かかる費用はどれくらいでしょうか?(スペックは(1)CPU(2)メモリ(3)HDD (4)グラボ)でお願いします。 それと、その現在最も高性能なPCができたとして今自分の持っているPCとはどれくらいの性能の差があるのでしょうか? 自分のPC→【CPU】core2DUO E8400(3.0GHz)【メモリ】2G【HDD】500G【グラボ】Geforce9600GT(512M) PCについてはあまり詳しくないので抽象的な質問になってしまいましたがよろしくお願いします。

  • PCの性能について

    とあるPCを販売する営業の方から「PCはCPUの性能が良ければ速く動きます」と説明を受けました。 事務用に使うPCで、CADなどは使用していません。最近のPCの性能は、CPUのみで決まるようになったのでしょうか。PCの用途にもよると思いますが、ネットに接続しない前提で、PCの性能というものは、CPUのほかに、メモリ、SSD(もしくはHDD)などが複合的に影響するものと認識していました。 上記のCPU以外の理由を営業の方に伝えても一向に、「CPUです」と言うので困っています。相手にしないのが一番だと思うのですが、そうもいかないもので困っています。

  • サーバ機の仕様

    今は5000pdvほどのLinux-WEBサーバ(Apache+PHP+MySQL)の構築をしたいと思いますので,サーバ機に求める性能は次のようなものを考えてます 1. CPU1GHz(1チップで)ほど 2. 1.より  メモリ128MB(1チップで)ほど  HDD10GB(1diskで)ほど 3. サーバ構築時,トラブル対応時にのみ  リモートでないキーボード、モニタ、FDD,CD-ROMを  必要とするのでそれ以外のときは  周辺機器を付なくていいようになっている  そのため、できれば、平常時は電源のon-offも  リモートで行いたい ですが、今後はたとえば、増設のみで1000万pdv,一部パーツ交換までありとすると10^8pdvまで対応できるくらいのものでもありたいと思っています.そのため、CPU,メモリ,HDD,video-grahic,RAIDなどの拡張をしていきたいので,拡張性に優れた自由度の高いものを作りたいとも思います. また,強固で長持ちするものにしたいのでクーラーは水冷式に拘りたいと思います. こういう場合,どんな仕様のものを自作したらよいでしょうか?具体例より考え方を教えていただけるとありがたいです.予算はとりあえず,気にしないで考えたいと思います.

  • どちらが高性能なのでしょうか?

    CPUがP3の700でメモリが256のPCと、 CPUがP3の1000でメモリが128のPCでは、 どちらが一般に高性能マシンとされるのでしょうか? 中古PCの購入で迷っています。教えてください。

  • レンタルサーバーについて

    レンタルサーバーで専用サーバーの機能とかを見ていると、CPUとかメモリとか載ってますけど、共用サーバーの機能のとこにはCPUとかメモリが載っていません。CPUとかメモリって当然性能のいいものの方が金額が高くて何かいい事があるんでしょうけど、レンタルサーバーにおいてCPUとかメモリってどういう意味のものになるんですか??また、共用サーバーには関係ないものなんでしょうか??

  • ストリーミングサーバーの性能とエンコードの関係

    通信環境、端末が関係することは一般的ですが、 ストリーミングサーバーの性能がよくないことと (例えばスペック(CPU、メモリ)が劣る) エンコードは何か関係するのでしょうか?

  • linuxをノートで使いたいのですが、この性能で大丈夫でしょうか?

    linuxをノートPCに入れようと思っています。 スペックが メモリ 512MB CPU Pentium4 HDD 20GB なのですが、使えますでしょうか? あと、快適に使おうとしたら、どれくらいの性能が必要でしょうか? 教えてください。宜しくお願いします。

  • 再インストールしたらPCの性能が落ちました。

    7年間使ってた98SEのPCを再インストールしたら、性能が落ちてしまいました。 とりあえずCrystalMarkで計測したのですが、 HDDは少々UP、CPUとメモリ関係が全体的に微妙にダウン。 グラフィック関係がGDIが多少UPしたものの、D2DとOGLがかなりダウン。 何故でしょうか?再インストール前にやったチューニングといえば、 メモリ関係でレジストリを弄ったような弄ってないようなって感じだけです。 とりあえず、どうすればソフトウェア面からPCの性能をUPできるのでしょうか? 特にグラフィック関係がCRYSTALMARKで目に見えるほど落ちたので心配です。 「窓の手」は試してみますがなんとも・・・