4

私はTomcatサーバー7(&JRE 1.6)を使用してDebianVPSで重いdbベースのGWTアプリケーションを実行しています。
私のアプリには、Tomcat接続プールを介してMySQL5データベースと通信する多くのJavaサーブレットが含まれています(接続プールがないと、mysqlは3分以内にクラッシュします!)オンラインユーザーとそのリクエストが増加し、tomcatサーバーが失敗し、有用なログやエラーメッセージが表示されなくなり(tomcatで実行されているWebアプリケーションにアクセスしたいときに接続タイムアウトエラーが発生します)、この問題はtomcatサーバーをリセットするまで存在します。私は自分のVPSにメモリ制限がなく、MySQL接続の問題もないことを知っているので、それがこの状況を引き起こすことを本当に知りません:(
これはserver.xmlのホストタグです(これらの仮想ホストはたくさんありますが、すべてのホストタグは似ています)

<Host name="sub1.mydomain.com" appBase="/var/www/sites/gwt_app" >

    <Context path="" reloadable="true" docBase="myDocBase" 
     xmlValidation="false" xmlNamespaceAware="false" crossContext="true" >

    <Resource name="jdbc/mysql/db" auth="Container" type="javax.sql.DataSource"

    initialSize="3" maxActive="50" maxIdle="10" 
    maxWait="15000" removeAbandoned="true" removeAbandonedTimeout="120"
    validationQuery="select now();"

    username="user_1" password="pass" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/db_1?useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8&amp;connectionCollation=UTF8_PERSIAN_CI&amp;noAccessToProcedureBodies=true"
    />
    </Context>

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/www/sites/gwt_app_logs"  prefix="tomcat_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</Host>

何か案が?

4

4 に答える 4

3

リソースの使用状況に関する詳細を提供する必要があります。しかし、あなたの説明に基づいて、HTTP スレッド プールが使い果たされているという問題が発生している可能性があります。デフォルトでは(BIOコネクタを使用)、Tomcatは200の同時接続しか処理できず、AFAIKはその多くの接続をバッ​​クログキューに「保留」しておくことができます。

これは、同時に 200 の接続しか処理できず、さらに 100 の接続がプールを待機することを意味します。301 番目の接続は拒否されるか、タイムアウトになります。

以下に、何を調べるかを示します。

  • HTTP スレッド プールの使用率
  • バックログ キューのサイズ
  • ごみ収集活動

Tomcat は、そのための貴重な メトリックを提供します。また、Tomcat からより多くの同時接続を絞り込むことに関する私の記事も役に立つかもしれません。

于 2012-06-03T11:29:11.883 に答える
1

BIO コネクタの最近のバグが原因である可能性があります。

参照: https://issues.apache.org/bugzilla/show_bug.cgi?id=53186

ただし、アプリケーションが DB 接続プールで 3 分以内にクラッシュする場合は、アプリケーションまたは DB 処理コードに問題がある可能性があります。

于 2012-06-04T15:10:57.663 に答える
1

/TOMCAT_DIR/bin/catalina.sh の CATALINA_OPTS パラメータを変更して、同時ガベージ コレクションを行うことができます。

CATALINA_OPTS="-XX:+UseConcMarkSweepGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:/TOMCAT_DIR/logs/gc.log"
于 2012-06-13T08:39:36.567 に答える
0

TomcatクラスタリングとApacheネットワークロードブランを使用する

于 2012-11-14T17:27:42.333 に答える