- PR -

tomcatのconnectorについて

1
投稿者投稿内容
武澤
常連さん
会議室デビュー日: 2004/09/27
投稿数: 31
投稿日時: 2007-01-16 12:08
こんにちは、武澤です。

Tomcat5.0.28のserver.xmlにあるconnectorタグにて疑問があります。
connectorタグに用意されている
 acceptCount, maxThreads, minSpareThreads, maxSpareThreads
ですが、ここのacceptCountってどのような振る舞い?をするものなのでしょうか?

tomcatのドキュメントではリクエストのキューと記載されていますが、細かな動作が
よくわかりませんでした。
自分なりに考えるとacceptCountが消費されるのは
「リクエストを受け付けて、処理実行用のスレッドを取得し、スレッドに処理を渡すまで」
と思っているのですが、これは正しいのでしょうか?
特に疑問なのはacceptCountが開放されるタイミングで、スレッドに処理を渡した時点
で開放されるのか?それともスレッドの処理が終わってクライアントにレスポンスを返
した時点で開放されるのか?です。

どなたか、ご教示いただけないでしょうか?

tomcatのソースから解析しようとも思ったのですが、膨大なのとどこから見ていけば良いのか?もさっぱりだったので、挫折してしまいました。
武澤
常連さん
会議室デビュー日: 2004/09/27
投稿数: 31
投稿日時: 2007-01-16 12:38
武澤です。

すいません、なんだか回りくどい文章でした。
単刀直入に言いますと、
acceptcountが消費される期間がどこからどこまでなのか?を教えていただけないでしょうか?
※この辺りのTomcatの実装クラス名、情報掲載URL等のポインタでも大いに助かります。

あっ、でも、そもそもacceptcountの意味自体を間違えていたら、ご指摘していただけると幸いです。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-01-16 12:58
引用:

武澤さんの書き込み (2007-01-16 12:38) より:
※この辺りのTomcatの実装クラス名、情報掲載URL等のポインタでも大いに助かります。



単なるlisten(2)のbacklogみたいです。

そこからorg.apache.tomcat.util.net.PoolTcpEndpointに
プロパティが流れて行ってinitEndpoint()で使われるのでしょう。

コード:
org.apache.coyote.tomcat5.CoyoteConnector:

    /**
     * Set the accept count for this Connector.
     *
     * @param count The new accept count
     */
    public void setAcceptCount(int count) {

        this.acceptCount = count;
        setProperty("backlog", String.valueOf(count));

    }


武澤
常連さん
会議室デビュー日: 2004/09/27
投稿数: 31
投稿日時: 2007-01-16 13:38
あしゅ様

ソースの場所まで教えていただき、ありがとうございました。

ずーーっと、jakarta-tomcat-connectors/coyote/src/javaの中を覗いていました。
特に拡張した実装をせずにそのままServerSocketを使っているんですね。
そうなると、acceptcountの消費期間は
 リクエストを受け取ってから、スレッドへ処理を渡すまで(listen状態になるまで)
でよさそうですね。

正直、ソースのポインタだけでもって書く時にかなり勇気を必要でした。
自分が理解できる内容でホッとしました。
1

スキルアップ/キャリアアップ(JOB@IT)