Tomcat 6.0.20、4 月 1.2、jdk 1.6.0_15 と mysql 5.1.38 を 4 GB RAM の rhel ボックスで実行しています。5 人のユーザーを持つ 1 つの単純な jsp/サーブレット アプリケーション、64 人のユーザーを持つ 1 つの struts 1.2.0.9、35 人のユーザーを持つ 1 つの struts 2.0 アプリケーションがあります。Struts 2.0 のユーザーは毎秒、1 日に約 900 のエントリを作成します。最後の 2 つのアプリケーションでは、永続化のためにトップリンクも使用しています。コード内で、参照されていないすべてのオブジェクトを null に宣言し、struts 2 サイトと tomcat サイトからの構成ファイルに運用値を適用しました。mysql でスレッド キャッシングを適用し、wait_timeout と interactive_timeout を tomcat のセッション タイムアウトと同等になるように減らしました。Linux でファイル記述子を増やしました。作り直されたクエリ。スレッド ダンプを調べ、gc 統計を監視し、これに基づいて上記の変更を適用し、
まだ「java.lang.OutOfMemoryError」エラーに直面しています。
時々、それはさまざまなもののためであり、時にはその Servlet.service() 、時にはその image.servlet 、時にはそれを引き起こすジャスパーです。
エラーは一定ではなく、時間の経過とともに変化し続けるため、非常にイライラします
どんな助けでも大歓迎です!!!
JAVA_OPTS=-server -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+CMSParallelRemarkEnabled (Tomcat マネージャーは 34 MB が空であると報告するため、permsize、mx、mn などは使用していません)
persistence.xml
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/dbname?autoReconnect=false"/>
サーバー.xml
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" compression="on" compressableMimeType="application/octet-stream,text/html,text/xml,text/plain,application/x-javascript,image/gif,text/css,image/gif,application/vnd.ms-excel,application/pdf" enableLookups="false"/>
context.xml
<Context reloadable="false" delegate="false" privileged="false">