GIJIN.NET

ITと音楽の狭間

Tech

Apacheのチューニング

投稿日:2014年9月16日 更新日:

gijin.netをはじめてから一週間。

最初は遊びで作っていたのですが、なんのかんのでメインBlogになりつつあります。AWSの勉強がてら、という事もあって、あまりWebサーバとかそっちには力を入れないつもりだったんですけどね。

ここ数日、つながりにくくなる事がよくありまして。ブラウザで見ていると、突然うんともすんとも言わなくなってしまいます。特に記事をアップしてすぐとか。あまりWebサーバに詳しくはないのですが、これはきっとApacheかなぁ、とか。構築した時のデフォルトそのまんまにしてますからねぇ。

そんなわけで、Apacheのチューニングを実施してみました。

参考にしたのはOSSコンソーシアムのこちらの記事
詳細は上記のリンク先をご確認くださいな。

早速、AWSで立ち上げているWebサーバへsshでログイン。記事にあるコマンドで状態を見てみます。

free

このコマンドは、メモリの使用状況を調査するためのものです。今回はAWSのmicroインスタンスを使っており、起動直後にこのfreeコマンドを打つ事で、メモリの状態をまず確認します。

total used free shared buffers cached
Mem: 1020528 142968 877560 0 9196 78468
-/+ buffers/cache: 55304 965224
Swap: 0 0 0

Apacheに割り当て可能な最大メモリ量は-/+ buffers/cache:行のfree列との事ですので、それを見てみます。上記の表から「965224」が割り当て可能な最大メモリ量となりますね。まぁこの値をギリギリに使っちゃうと、それはそれでキャッシュやバッファに使う分を圧迫しちゃうという事で、まぁ適度に、というところですかね。

ちなみに記事の中や、Googleで同様の記事を読んでると、同じサーバでDBサーバも兼ねている場合もあるようで、まぁその時はそっちの分も考えておく必要があるでしょうね。とりあえず私の場合はDBサーバは別のインスタンスで上げているので、今回は気にしない事にします。

次はApacheが実際に使っているメモリ量を調査します。

先のリンクでは、次のように書かれていました。

今回はPreforkで動作させるので、Apacheはスレッドを使わずに、1つの親プロセスとリクエストを受け付ける複数の子プロセスで動作します。

preforkについてちょっと説明。
親プロセスが、リクエストがある度に子プロセスを起動(forkっていう)し、実際の通信は子プロセスが行うわけです。ただ、リクエストの度にforkしちゃうと、forkが終わるまでに待ち時間ができちゃって、通信が遅くなっちゃいますよ、と。

preforkというのは、最初からいくつか子プロセスをforkしちゃっておくやり方。最初からforkしておくんで、fork完了するまでの待ち時間、っていうのが無いので、高速にリクエストに答えられる、というわけです。

ということで、やろうとする事は単純で、この「子プロセス」を最大でいくつ上げておけるか、というのを調査します。

Apacheが使っているメモリ量を調査するコマンドを、先のリンクからコピってつかってみます。

ps aux | grep [h]ttpd | grep [a]pache | awk 'BEGIN{x=0}{x+=$6}END{ print x/NR }'

結果は「5484」との事。

さていよいよ、Apacheの最大子プロセス数を計算します。
計算式は次の通り。

Apacheの最大子プロセス数 : P =
Apacheに割り当て可能なメモリ量 / Apacheの子プロセスあたりの平均メモリ使用量

じゃあこれに当てはめて
965224 / 5484 = 176

これでP = 176という結果になりました。

じゃあ早速チューニング作業です。
httpd.confの中の、preforkの設定を変更しましょう。

sudo vi /etc/httpd/conf/httpd.conf

preforkで検索します。
「IfModule prefork.c」 というのが見つかるはず。

これも先のリンクにあるものを抜粋して、それぞれの設定の意味を載せておきます。

StartServers :
起動時に作成する子プロセス数
MinSpareServers :
リクエスト待ち状態の子プロセスがこの数値より少ない場合は新しく子プロセスを作成する
MaxSpareServers :
リクエスト待ち状態の子プロセスがこの数値より多い場合は超過した子プロセスを終了する
ServerLimit :
起動可能な子プロセスの最大値、変更には再起動が必要
MaxClients :
起動可能な子プロセスの最大値、リロードで変更可能
MaxRequestsPerChild :
子プロセスがこの回数までリクエストを受け付けたら、子プロセスを終了する

実際の値についても、以下の通り計算してみました。


StartServers P×5/256
MinSpareServers P×5/256
MaxSpareServers P×10/256
ServerLimit P
MaxClients P
MaxRequestsPerChild 1000

Pの値をそれぞれいれれば、それっぽい数字が出てきますよね。それをそのまま設定して、Apacheを再起動してみました。

おお、なんか安定したかも???

まぁこれで様子を見て、ですかね。個人的にはnginxとかmysqlのチューニング(RDSに替える、ってのもやってみたい)とかとかもまぁどこかでやってみるつもりなので・・・まぁそのうちに。

-Tech
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サイト不具合続報・・・DoS攻撃受けてたっぽいです(苦笑)

えーと、昨日の記事の続きというか・・・実は今朝また停止したんですよ、このサイト。で、ちゃんと調べてみたら特定のIPアドレスから大量のアクセスが・・・あ、これってもしかして・・・DoS攻撃? 関連

no image

ちょっとハマった話

昨日、AWSで作ってみたこのBlogなんだけど、ちょっとハマった事があったのでメモで書いておく。 大きくは二つ。 (1)鍵認証のための鍵をSCPでアップロード出来ない問題 (2)Global IPの変 …

no image

作ってみた!

夏休みの宿題にするつもりで積ん読リストに入っちゃってた「Amazon Web Service c基礎からのネットワーク&サーバー構築」に手を出してみた。 関連

no image

独自ドメインとかとってみたw

なんかせっかく作ったんだし、ということで、お名前.comで独自ドメインとか取っちゃいましたw ということで、今後は http://gijin.net というアドレスでやってまいりますwww 以前のBl …

Apacheチューニング、の訂正というか

いやー、昨日の記事、いろいろツッコミを受けましたw 関連

2017/12/14

えびそば一幻って初めてだったけど美味いね

今日は客先直行。 関連

2017/12/13

美味い蕎麦を堪能する

昨日の出張の疲れがなんか微妙に抜けてないような、そんな感じの今日。 オフィスで仕事しつつ、胃腸の調子もあまりよくないというか、全体的にだるい感じだったので、今日は昼に美味い蕎麦を食べたい気分に。 関連

2017/12/12

いつも持ち歩いてるものをまとめてみた

出張ということもあったんですが、考えてみたら出張だろうが帰省だろうが、持ち歩いてるものは大きく変わらないんで、まぁ軽く(備忘録として)まとめておく感じ。2017年12月現在の状況。そのうちまた変わるか …

2017/12/12

飛行機で日帰り出張(ラーメン付き)

今日は日帰り出張。疲れた・・・。 関連

2017/12/11

SNSをまた少しずつ活発に

最近Blogとかのほかに、TwitterとかFacebookとかInstergramとかの活動もちょこちょこ増やしつつある今日このごろ、いかがお過ごしでしょうか。 関連

管理人:ぎじん

岩手県出身のアマボエ(アマチュアオーボエ)奏者 ときどき 棒振りになったりする40代♂
震災後に転職、単身東京へ(妻子は盛岡に残してたり)。IT業界の混沌とした流れに身を任せつつ、仕事と趣味の狭間にあるものを書き留めていくとかそんな感じ。
2014年9月
« 8月   10月 »
 123456
78910111213
14151617181920
21222324252627
282930