YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-03-20 (水)


[一語一絵/IT系]

mod_bwでapacheの帯域制御 / 2006-07-29 (土)

今朝の最低気温は25.3℃。梅雨明けした26日午前中から一度も25℃を下まわらない真夏が戻ってきた。今日も最高気温32.9℃と真夏日だったものの、海風があったおかげで日中も意外と過ごし易く、18日からのエアコン運休継続中なり。

転ばぬ先の杖、忘れる前の備忘録。

Webサーバapacheの帯域を制御する拡張モジュール[External]Bandwidth Mod(mod_bw)apache1.x系向けだったver0.6まではbw_modという名称だったが、apache2.0系対応となったver0.7以降は慣例に従ってmod_bwとなっている。

モジュールの作成方法はスーパーユーザーで

apxs -i -a -c mod_bw.c
とすべし。きっと/usr/local/apache2/modulesにインストールされるので、後はapacheをrestartすれば良い。

なおapacheをrestartした時に

Undefined symbol "atomic_set"
というエラーが出る場合がある。これはapacheの実行環境とapr開発環境のバージョンが一致していない為だ。取り敢えずmod_bw.cでAPR_MAJOR_VERSIONを見ている下記箇所を"#if 1"か"#if 0"で強制する事で回避するのが早い。
/* Compatibility for APR < 1 */
#if (APR_MAJOR_VERSION < 1)
    #define apr_atomic_inc32 apr_atomic_inc
    #define apr_atomic_dec32 apr_atomic_dec
    #define apr_atomic_add32 apr_atomic_add
    #define apr_atomic_cas32 apr_atomic_cas
    #define apr_atomic_set32 apr_atomic_set
#endif

また、これまでは単純に

BandWidthModule On
だけで制限できたのだが、ver0.7以降は細かく管理できるようになった事から
BandWidthModule On
AddOutputFilterByType MOD_BW text/html text/plain
な感じで制限するコンテンツ形式まで列挙する必要がある。逆にこれまで同様に問答無用にガッツリ絞る場合は
BandWidthModule On
ForceBandWidthModule On
を加えれば良い。

ファイルの拡張子毎に制限するのは

LargeFileLimit [Type] [Minimum Size] [bytes/s]
というオプションだ。詳細は同梱の[External]mod_bw.txtを参照すべし。

【参照】
●Bandwidth Limiter For Apache(mod_bw) http://bwmod.sourceforge.net/