■サーバー環境は以下の通りです。(修正)
CPU: 750MHz
メモリ:512MB(増設しました)
HD:40GB
回線:ADSL47M
ルーター:YAMAHA57i
OS:VineLinux4.1
サーバーソフト:apache2
いつもお世話になっております。おかげさまでVineLinux4.1を上記環境のパソコンにインストールし、順調に動作しております。
今のところ問題はないのですが、不明な点があり、いろいろ調べているのですが解決できないためこちらで質問させていただきます。
HTMLファイル等の表示は問題ないのですが、cgi(perl)ファイルへ集中的にアクセスした場合に、CPUがMAXになってしまい大変負荷がかかってしまいます。
先日は海外からCGIへの連続した送信が長時間続き、長時間パソコンが激重状態になっておりました。
どうも、レンタルサーバーや他の方の自宅サーバーでは何らかの対策が講じられているようで、集中したアクセスがあっても大丈夫なようですが、
うちの自宅サーバーは常にCGIが起動されてしまっているようです。
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot /usr/local/apache2/cache #フォルダを作成
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
</IfModule>
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
</IfModule>
調べてみましたところ、同一IPからの同一ファイルへの連続アクセスによる負荷にはキャッシュを有効にするといいそうで、apache2のhttpd.confに↑の設定を記述してみましたが、F5等で送信すると相変わらずキャッシュが効かずにCPUが100%状態になっております。
どこか設定方法が間違っているのでしょうか?それとも、
httpd.confの
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
には#が入っていませんが、
VineLinux4.1では、mod_cacheや、mod_disk_cacheや、mod_mem_cache等を使うには個別にモジュールをインストールする必要があるのでしょうか?
また、CGIへの連続アクセスに対する対策はキャッシュ以外の方法を講じるのがいいのでしょうか?
皆さんが公開されているサーバーとは何かが違うようですが、基本的にどのような対策を講じられているのかよくわかっておりません。
大変お手数をおかけし恐縮でございますが、ご指導頂けれると幸いです。
私の場合はhttpd.confでこの様な感じです。
KeepAlive On
その他はほぼサイトの内容と同じです。
有難うございます。うちもKeepAliveはOnにしています。設定的にはみなさん大体同じなんですね。
ただ単にパソコンのスペックが低すぎるのがいけないのかも知れません。もう少しこのまま辛抱して、将来的にはクアッドコアの消費電力版が安くなった頃に買い換えようかと思います。
メモリーを増強してmod_perlでcgiを動かしてみてはどうでしょう。
処理が数段に早くなりますが、メモリーの消費が激しいのでMaxClients
で調整する必要があります。
あと、cronで1日2回程度apacheの再起動するのが安全だと思います。
再起動はrestartじゃなくてgracefulでする方が安全です。
チューニングしだいで、もっと快適になれるように思うのですが・・
mokoさんありがとうございます。
さっそくmod_perl2をapt-getしたところ
パッケージが壊れているような表示がでてインストールできませんでした。あと、SpeedyCGIはメモリの使い方が上手だそうで、SpeedyCGIで動かしたいスクリプトをちょこっと弄るだけでOKなそうですが残念ながらパッケージが無いようです。検索でインストール方法の資料を調べてみましたが、情報が少なく手こずっています。ネット上にはphp高速化についての情報は結構あるのですが、perlの高速化に関する情報は少ないですね・・・
少し前に、こちらのサイト様を参考にVineLinuxに挑戦して無事運営することができました。初心者にもわかりやすい解説で大変助かっております。
管理人様へ要望なのですが、Perlの高速化(SpeedyCGI)に関する解説ページも作成していただけたら嬉しく思います。
わたしはソースからインストールしてるので、mod_perlもソースで
インストールしています。
サイトを検索すると、たくさんヒットしますのでぜひチャレンジしてみてください。
mokoさん有難うございます。
cpanからのインストールは試してみたのですが、途中でエラーが沢山表示されてしまい一向に進みません。
ソースからのコンパイルを理解するには今のスキルではなかなか難しいものがありそうですが、VineLinuxを覚えるには避けて通れそうにもありませんので、徹底的に挑戦してみようと思います。<(_ _)>