UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Apache1.3.xで,mod_statusを使う

Apache1.3.xで,mod_statusを使う


0.改訂履歴

  • 2008.03.31 新規作成

1.はじめに

 このドキュメントでは,Apache 1.3で,mod_statusを有効にして,サーバのパフォーマンス状態を確認してMaxClients等のパラーメータをチューニングする考察までを記載したものである.

 なお,使用しているOSは,RedHat ES3.0で,Apacheは,1.3.37である.

2.httpd.confの設定確認

  • mod_statusがロード対象となっていることを確認する.
httpd.conf
# Example:
# LoadModule foo_module libexec/mod_foo.so
LoadModule env_module         libexec/mod_env.so
LoadModule config_log_module  libexec/mod_log_config.so
LoadModule mime_module        libexec/mod_mime.so
LoadModule negotiation_module libexec/mod_negotiation.so
LoadModule status_module      libexec/mod_status.so
LoadModule includes_module    libexec/mod_include.so
  • また,AddModuleにてmod_statusが有効になっていることを確認する.」
httpd.conf
#  Reconstruction of the complete module list from all available modules
#  (static and shared ones) to achieve correct module execution order.
#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_include.c
  • 仮想ディレクトリのserver-statusが記述されているが,コメントアウトになっているので,これをコメントアウトして有効にする.
変更前
#
# Allow server status reports, with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

変更後
#
# Allow server status reports, with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
#    Allow from .example.com
    Allow from 192.168.0.100
</Location>

  • この時,関係者以外アクセスできない様に,Allow句によって,server-statusへアクセスできるIPアドレスを指定しておく.

3.ステータスを取得してみる

  • mod_statusを有効にするためには,apacheを再起動する.
[root@uranos common]# /usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl stop: httpd stopped
[root@uranos common]# /usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl start: httpd started
[root@uranos common]# 
  • プロセスが動作しているか,確認する.
[root@uranos common]# ps -ef | grep httpd
root     12225 12223  0 Mar28 ?        00:00:03 tail -F -n 0 /www/local/var/log/httpd/lisms/err.log
root      6981     1  0 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     6982  6981  0 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     6983  6981  0 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     6984  6981  1 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     6985  6981  1 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     6986  6981  1 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     6995  6981  0 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
mgets     7009  6981  0 11:50 ?        00:00:00 /usr/local/apache/bin/httpd
root      7035 27731  0 11:50 pts/6    00:00:00 grep httpd
[root@uranos common]# 

  • 成功した模様.
  • サーバのステータスを取得してみる.
iMac-G5:~ shinnai$ curl http://test.ujp.jp/server-status
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML><HEAD>
<TITLE>Apache Status</TITLE>
</HEAD><BODY>
<H1>Apache Server Status for test.ujp.jp</H1>

Server Version: Apache<br>
Server Built: Dec 18 2006 16:07:41<br>
<hr>
Current Time: Monday, 31-Mar-2008 11:57:51 JST<br>
Restart Time: Monday, 31-Mar-2008 11:50:07 JST<br>
Parent Server Generation: 0 <br>
Server uptime:  7 minutes 44 seconds<br>

1 requests currently being processed, 9 idle servers
<PRE>____W_____......................................................
................................................................
................................................................
................................................................
</PRE>
Scoreboard Key: <br>
"<B><code>_</code></B>" Waiting for Connection, 
"<B><code>S</code></B>" Starting up, 
"<B><code>R</code></B>" Reading Request,<BR>
"<B><code>W</code></B>" Sending Reply, 
"<B><code>K</code></B>" Keepalive (read), 
"<B><code>D</code></B>" DNS Lookup,<BR>
"<B><code>L</code></B>" Logging, 
"<B><code>G</code></B>" Gracefully finishing, 
"<B><code>.</code></B>" Open slot with no current process<P>
<P>
PID Key: <br>
<PRE>
   6982 in state: _ ,   6983 in state: _ ,   6984 in state: _ 
   6985 in state: _ ,   6986 in state: W ,   6995 in state: _ 
   7009 in state: _ ,   7046 in state: _ ,   8587 in state: _ 
   9534 in state: _ ,
</PRE>
<hr>To obtain a full report with current status information you need to use the 
<code>ExtendedStatus On</code> directive. 
</BODY></HTML>
iMac-G5:~ shinnai$ 
  • server-statusの結果は,HTMLで出力されるので,Webブラウザで確認する事ができる.
    
    								
    
    								
  • また,この数値はリアルタイム値なので,リロードする都度,異なる.

4.ステータスの読み方

  • server-statusで出力されるステータスは,以下の通り.
記号
項目 説明
_
Waiting for Connection  プロセスが起動して接続待機中.
S
Starting up  プロセス起動中.
R
Reading Request  プロセスがリクエスト受信中
W
Sending Reply  プロセスが応答中
K
Keepalive(read)  Keepalive(接続保持状態)で接続しているが,データの流れが無いもの.
D
DNS Lookup  DNSを検索中.
L
Logging  接続処理完了後,ログ出力中.
G
Gracefull finishing  ApacheをGracefullで再起動しているため,接続終了待ち.
.
Open slot with no current process  Maxプロセスが起動していない.
  • 例えば,先ほど例では,次の様になっている.
Current Time: Monday, 31-Mar-2008 11:22:48 JST
Restart Time: Monday, 31-Mar-2008 11:09:54 JST
Parent Server Generation: 0 
Server uptime:  12 minutes 54 seconds

2 requests currently being processed, 7 idle servers
______W_W.......................................................
................................................................
................................................................
................................................................

PID Key: 
   15805 in state: _ ,   15806 in state: _ ,   15807 in state: _ 
   15808 in state: _ ,   15809 in state: _ ,   15821 in state: _ 
   16417 in state: W ,   16437 in state: _ ,   19075 in state: W 
  • この___とか...の数を数えると,httpd.confのMaxClientsで指定された数だけある事がわかる.
  • また,Wが2つあるので,2セッションが応答中ということになる.
  • ちょっとアクセスが多い時間だと,次の様になる.
102 requests currently being processed, 3 idle servers
<PRE>WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW__WW_.......................
................................................................
................................................................
</PRE>
  • この場合は,次の様に読み取ることができる.
    • 最大256クライアント中,105プロセスが起動している.
    • リクエストを受け付けているのが,102プロセス.
    • 3プロセスはアイドル中.
  • この状態は,負荷が高くなりつつあると言える.
  • このサーバ場合,KeepAliveを利用していないので,105プロセスを利用している実際のクライアント数が何ユーザに該当するのか不明.
  • これば,別にApacheのアクセスログからanalogで分析していて,このシステムでは,1PageViewあたり18Requestとわかっているので,ここでは約6ユーザが接続していると考えられる.
  • 状態でCPU使用率とメモリの空き容量を考察し,余裕があればMaxClientsを上げる等の対策が考えられる.


広告スペース
Google