[an error occurred while processing this directive]
【Apache】.htaccessの書き方1つで負荷を軽くできるのね・・・

第271日目:【Apache】.htaccessの書き方1つで負荷を軽くできるのね・・・

【追記 2011/06/07 12:50】
ども、ども、▲('A`)/です。
えーと、今日は午前中はroot弟(´・ω・`)が買ってきてくれたワットチェッカを使って
今まで作ってきた各サーバの消費電力を測っていました。
近々測定結果を公開しますので、お楽しみに。
午後からは病院(糖尿病治療)に行く都合で会社を早退しますので、本日はこれまで。
体調は少し落ち着いてきましたが、細かいところでガタがきていまして・・・
トホホ・・・

いやあ、今日はとても良い天気だなあ・・・
札幌では明日からよさこいソーラン祭りが始まります。
また騒がしくなるんだなあ・・・
で、来週は札幌まつりとお祭りが続くのでした、ハハハ。。。

それでは、また!▲('A`)/

↓ 本編はこちらです。

(2011/06/06 10:00)
どうも、▲('A`)/です。
えーと、本日はちょっと小ネタとして.htaccessの書き方について書きますね。
「何を、今更・・・」と言わないでくださいね。これが本当に馬鹿にできない位
負荷軽減に役立ったのですから。
.htaccessの書き方のバイブルと言えば、みなさんご存じのミケネコ研究所さんの
ミケネコのhtaccess リファレンス 」ですね。
▲('A`)なんかは、いつもここでお世話になっています。
今回はミケネコのhtaccess リファレンスの中の、アクセス・コンフィグレーションに
書かれている「ホスト/IP 制限」の内容がかかわってきます。
Apacheでのアクセス制限を行なう上で大事な事が書かれているのです。
今回▲('A`)改めて勉強になりました。

BIG-server.comでは .htaccessに関して解説したページをこちらに用意して
皆さんにご覧頂いています。まあ、内容はDigest認証(ダイジェスト認証)での
アクセス制限です。
アクセス制限というと色々あるのですが、特定のディレクトリ内を閲覧させるのに
ユーザとパスワードを設定して、公開する人間を制限するという方法があります。
まあ、これは一般的な制限の方法ですが、それとは別に、特定のホスト名あるいは
IPアドレスからのアクセスを許可する/拒否する、という制限をかける方法もあります。
(「ホスト制限」とか「IP制限」とか言われます。)

BIG-server.comではサーバをお客様に納品する際にはサーバ(システム)側では
特定のホストやIPからのアクセスを拒否するという事を行なっておりません。
(それは、世界を股にかけて移動されているお客様にどこからでもアクセス
できる事が大事、と考えているからです。旅行先からアクセスしようとして、
拒否されているとかだと、困るでしょう?)
なので、お客様の方で .htaccess を使ってうまーく制限をかけてもらう事を
お勧めしております。
で、この制限の適用の仕方とか記述方法については色んなサイトで取り上げられて
説明されていますので、▲('A`)の方で改めて説明はしません。ええ、ええ・・・

「じゃあ、何なの?」というと、その記述の仕方如何によってはサーバに負荷をかけて
しまうという事です、ハイ。

通常.htaccessに対して拒否したいホスト名とかIPアドレスを登録する場合には
一般的に以下の様な記述を行なうことが多いです。
------------------------------------------------------------
order allow,deny
allow from all
deny from .go.jp # 日本のお役所はお断り
deny from 192.168.0. # 192.168.0.??? を丸ごと拒否
------------------------------------------------------------
この場合には1&2行目で一旦全部のアクセスを許可してから、3〜4行目で
拒否する条件を記述します。
ここでは3行目では 末尾に.go.jpを持つホスト名からのアクセスを
ここでは4行目では 先頭が 192.168.0.で始まるIPアドレスからのアクセスを
「全てお断り」と指定しています。
あ、ここで補足ですが、IPの数は通常5行目の場合には256個となります。
別の書き方をするなら、192.168.0.0/24 となります。

ここで、普通の.htaccessの説明をしているサイトでは単純に「ホスト名
又はIPアドレス」を記述すればいいですよ、と書いているのが多いです。
それはそれで間違いでは無いのですが、サーバ側とすれば「IPアドレス」で
記述してね、とお願いしたい訳です。
理由はホスト名で書くと、外部からのアクセスが来た時にIPアドレスを
ホスト名に変換して、条件と一致するかどうか調べる処理が動いてしまうからです。

言い方を変えますと、外部からWebブラウザ経由でアクセスが来た時に
Apacheシステムの側では
1) IPアドレスのホスト名への変換(DNS逆引き処理)
2) マッチング処理
3) アクセス元への応答処理
の3つが動くのです。
IPアドレスだけの記述であれば、1)の処理は必要ないのです。
しかも 1)の処理はDNSの逆引きを行う為、DNSサーバへの問い合わせ処理
(及び通信)が発生します。この通信処理がバカにならないのです。

アクセスが多いサーバですと、アクセス数にもよりますが50Kbps〜100Kbps
(多いところでは1〜3Mbps)の帯域をデータ通信で占有してしまったりします。
本来は回避できる「通信面での根詰まり」です。

もちろん、それだけではなく、逆引き結果のホスト名情報等はApacheのログに
記録されますので、Apacheのログファイルのデータサイズも大きくなります。
HDDの使用量を抑えたい場合には避けたいところです。
(ちなみに伝え聞いた話では、2ちゃんねるのサーバですと、各サーバの
Apacheログは1日毎に切り替わりますが、そのサイズがkamomeクラスですと、
4〜5GB位になるそうです。)
巨大なサイトのサーバってログファイルもサイズが巨大なのですよ、ハイ。

逆引きを行なっているのはApacheのシステムなのですが、これは通常はオフに
なっています。Apacheには「HostnameLookups ディレクティブ」という設定が
httpd.confの中にあって、逆引き処理の仕組みは入っているのですが、通常
負荷を上げない様にする為デフォルトがOFFになっています。
(Apache本家のマニュアルにも負荷の高いサーバではOFFにしさないと
言ってます。)
でも、Aapacheが参照するディレクトリ(バーチャルホスト部で記述の処も含む)に
.htaccessが設置され、そこでホスト名での許可/拒否の記述があった場合には
この機構が動き、先程ご説明した動きになるのです。

なので、もしも自分のサーバで負荷が高いのでアクセス制限したけど、なんか
軽くならないんだよなあ・・・という方がいらっしゃるなら、.htaccessの記述内容を
一度確認してみてください。

まあ、今回実際に負荷軽減を図ったサーバでは、データ帯域では約50Kbps、
HDD領域では19.8->18.3MBとスリム化しました。
それほどでは?と思われるかもしれませんが、それ以外にもDNSの逆引きの為に
DNSキャッシュサーバへのコネクション回数が減りました。
(回数の詳しい数まではモニタリングできませんでした、スミマセン。)
サーバが忙しく動く日本の深夜帯とかにはこのコネクション回数の減少が
効果があった模様です。
(ネットワーク自体が混雑し易い時間帯ですからねぇ・・・)

長々と判りづらい説明を書いたかもしれませんが、ご容赦を・・・
さて、次回はいよいよワットチェッカを使って、dokuo号や二世号の消費電力を
徹底解剖してみますので、お楽しみに。

それでは、また!▲('A`)/

270日目に戻る。   272日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]