У меня есть tomcat 6.0.20, апрель 1.2, jdk 1.6.0_15 с mysql 5.1.38, работающий на RHEL-боксе с 4 ГБ оперативной памяти. На нем есть одно простое приложение jsp / servlet с 5 пользователями, одно - 1.2.0.9 с 64 пользователями и одно приложение 2.0 с 35 пользователями. Пользователи Struts 2.0 делают запись каждую секунду, около 900 записей в день. Я также использую toplink для постоянства в последних двух приложениях. В коде я объявил все объекты без ссылок на null, применил производственные значения для файлов конфигурации с сайта Struts 2 и с сайта Tomcat. Применено кеширование потоков в mysql, уменьшите wait_timeout и interactive_timeout, чтобы оно было эквивалентно тайм-ауту сеанса tomcat. Увеличены дескрипторы файлов в linux. Переработанные запросы. Изучил дамп потока, посмотрел статистику gc, применил вышеуказанные изменения на основе этого,
ЕЩЕ все еще сталкивается с ошибкой "java.lang.OutOfMemoryError".
в разное время это для разных вещей, иногда это Servlet.service (), иногда его image.servlet, иногда это яшма, которая его вызывает.
крайне разочаровывает, так как ошибки не постоянны, а постоянно меняются со временем
Любая помощь, пожалуйста, будет очень
оценили !!!
JAVA_OPTS = -сервер -XX: + UseConcMarkSweepGC -XX: + CMSClassUnloadingEnabled -XX: + CMSPermGenSweepingEnabled -XX: + CMSParallelRemarkEnabled
(менеджер tomcat сообщает, что 34 мб пусто, поэтому не использовали permsize, mx, mn и т. д.)
persistence.xml
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/dbname?autoReconnect=false"/>
server.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">