[Seasar-user:4686] Re: S2ContainerImpl#internalGetComponentDef のsynchronizedについて
Amatatsu Tetsurou
[E-MAIL ADDRESS DELETED]
2006年 9月 22日 (金) 19:26:11 JST
天辰です。
小林さんからのご質問に回答させていただきます。
>8CPU・16core ともなると,synchronized での競合がネックになるのも
>分からなくはないのですが,2CPU・4core でもネックになるというのは
>正直意外です.
>参考までに,以下の情報を教えて頂けないでしょうか?
>・Tomcat プロセスの数
・Tomcat プロセスの数:1
>・Tomcat プロセスあたりの同時実行スレッド数
・テスト内容は、以下のパターンで同時ユーザー数を徐々に増やしながら行いました。
1.ログインページ→メインページ(フレームあり、ヘッダ、レフト、メイン)
2.ログインページ→メインページ(フレームあり、ヘッダ、レフト、メイン)→他ページ表示(フレームあり、ヘッダ、レフト、メイン)
ログイン後のページはフレームを使用しているので、1ユーザがログイン後のページ表示で、
3つのリクエストが発生します。
同時ユーザ数は、5〜25ユーザまで順次増やすパターン(その他別途100ユーザも行っていますが)で検証しました。
フレームを使用しているので、ログイン後のメインページ表示で、ユーザー数×3のリクエストが発生して、
スレッド数もおおよそ、その数が動いていると思います。(その他Tomcatでプールしているスレッドもありますが)
CPUコア数を変えた場合も、上記の条件は同じになっています。
>・ログイン処理で利用されるコンポーネント数 (おおよそで結構です)
>・Dao や (もしあれば) サービスなどの instance 属性 (singleton か否か)
数えることは難しいのでおおよそになりますが、多いページでは100コンポーネントを超える箇所もあると思います。
また、直接的な上記の回答にはなりませんが、上記パターンでの
S2ContainerImpl#internalGetComponentDefの呼び出し回数をカウントしたところ結果は以下になりました。
・ログインページ→メインページ間での呼び出し回数:21344
・メインページ→他ページ間での呼び出し回数:200385
DIの設定については以下の通りです。
システム内のdiconファイルの数:325ファイル
システム内のコンポーネント宣言数:840
ベンチは取っていないのですが、diconのインクルード順で呼び出し回数が変わるようなので、
よく使用するコンポーネントが定義されているdiconファイルの
include宣言が前になるようにしたところ呼び出し回数は以下の通り減少しました。
・ログインページ→メインページ間での呼び出し回数:10267
・メインページ→他ページ間での呼び出し回数:122998
よく調べていないのですなんとも言えないのですがdiconファイルを先頭から何度も線形検索しているように思われます。
以上
> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED] [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Koichi Kobayashi
> Sent: Wednesday, September 20, 2006 12:00 AM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:4636] Re: S2ContainerImpl#internalGetComponentDef のsynchronizedについて
>
> 小林 (koichik) です.
>
> synchronized に関してはひがさんからの回答があったように排除の
> 方向で検討が始まっているのですが,ちょっと気になる点があるので
> 質問させてください.
>
> Date: Tue, 19 Sep 2006 17:35:32 +0900
> From: "Amatatsu Tetsurou" <[E-MAIL ADDRESS DELETED]>
> To: <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:4629] Re: S2ContainerImpl#internalGetComponentDef のsynchronizedについて
>
> > またCPU数を2CPU(4コア)に減らして同様のテストを行っても上記部分がネックに
> > なっていることを確認しました。
>
> 8CPU・16core ともなると,synchronized での競合がネックになるのも
> 分からなくはないのですが,2CPU・4core でもネックになるというのは
> 正直意外です.
> 参考までに,以下の情報を教えて頂けないでしょうか?
>
> ・Tomcat プロセスの数
> ・Tomcat プロセスあたりの同時実行スレッド数
> ・ログイン処理で利用されるコンポーネント数 (おおよそで結構です)
> ・Dao や (もしあれば) サービスなどの instance 属性 (singleton か否か)
>
> プロセス数及びスレッド数は 8CPU・16core と2CPU・4core それぞれの
> ケースを教えて頂けると幸いです.
> お手数ですが,よろしくお願いします.
>
>
> --
> <component name="koichik">
> <property name="fullName">"Koichi Kobayashi"</property>
> <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
> <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内