Apache 「Forbiddenだとぅ?Too many files でつか?」
- 2006.03.28
- Webマスター
普段どおり、自社サイトにアクセスすると
Forbidden
んー。アクセスできません ヽ(´ー`)ノ
■ログを確認する
[Sun Mar 19 23:50:09 2006] [error] [client 6X.215.32.12] (24)Too many open files: file permissions deny server access: /export/home/www/public_html/xxx.html [Sun Mar 19 23:50:11 2006] [error] [client 6X.236.103.72] (24)Too many open files: file permissions deny server access: /export/home/www/public_html/xxx.html [Sun Mar 19 23:50:12 2006] [error] [client 21X.255.229.237] (24)Too many open files: file permissions deny server access: /export/home/www/public_html/aaa.html
Too many open files だそうです。はい。
■Apacheを再起動する
とりあえず、Apacheを停止して、起動します。再起動はダメです。
# /etc/init.d/apachectl stop # /etc/init.d/apachectl start
とりあえず、これで生き返りましたよ。
■原因を探る
Helixのストリーミングサーバがたくさんファイルを扱っていたようで、デスクリプタを増やす必要あり。
■ディスクリプターを増やす
1プロセスが開けるファイルが256と少ない。
# ulimit -a core file size (blocks) unlimited data seg size (kbytes) unlimited file size (blocks) unlimited open files 256 pipe size (512 bytes) 10 stack size (kbytes) 8192 cpu time (seconds) unlimited max user processes 15877 virtual memory (kbytes) unlimited
ということで、1プロセスあたりのファイル・ディスクリプタの数を増やすために、/etc/system にあるシステム・パラメーターを変更する。これによりSolarisのスケーラビリティーを上げるのだ。
ファイル・ディスクリプターの数を 1024 にするために、以下の行を /etc/system のお尻に付け加えて、再起動すればOKだ。(電源を落とす時間が必要になるのが残念)
set rlim_fd_max=1024
■Apacheの設定を調べる
再起動後に、Apacheのコンパイル時の設定を調べる。256という制限が付いたようなので、もう一度コンパイルし直すか…。
# /usr/local/apache/bin/httpd -V Server version: Apache/1.3.31 (Unix) Server built: Aug 31 2004 17:49:27 Server's Module Magic Number: 19990320:16 Server compiled with.... -D HAVE_MMAP -D USE_MMAP_SCOREBOARD -D USE_MMAP_FILES -D HAVE_FCNTL_SERIALIZED_ACCEPT -D HAVE_SYSVSEM_SERIALIZED_ACCEPT -D HAVE_PTHREAD_SERIALIZED_ACCEPT -D DYNAMIC_MODULE_LIMIT=64 -D HARD_SERVER_LIMIT=256 -D SHARED_CORE -D HTTPD_ROOT="/usr/local/apache" -D SUEXEC_BIN="/usr/local/apache/bin/suexec" -D SHARED_CORE_DIR="/usr/local/apache/libexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/httpd.scoreboard" -D DEFAULT_LOCKFILE="logs/httpd.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" -D ACCESS_CONFIG_FILE="conf/access.conf" -D RESOURCE_CONFIG_FILE="conf/srm.conf"
ちなみに入っているモジュールの一覧は、このように確認する。
# /usr/local/apache/bin/httpd -l Compiled-in modules: http_core.c mod_env.c mod_log_config.c mod_mime.c mod_negotiation.c mod_status.c mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_asis.c mod_imap.c mod_actions.c mod_userdir.c mod_alias.c mod_access.c mod_auth.c mod_so.c mod_setenvif.c suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec
ほとんど、ノーマル状態だな…。
-
前の記事
Apacheを運用するはめに! 2006.03.28
-
次の記事
UNIXを学ぶ 2006.03.29