#tomcat #jenkins #sonarqube
#tomcat #дженкинс #sonarqube
Вопрос:
У меня есть сервер tomcat, и я хочу установить на него Jenkins и Sonar. Я использую дистрибутив debian, поэтому я получил tomcat6 и Jenkins через apt-get. Когда я копирую jenkins.война с моим каталогом tomcat6 / webapps, все работает нормально. Однако, когда я копирую сонар.война с tomcat6 / webapps, sonar работает нормально, но Дженкинс выдает ошибку 500:
javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar:file:/var/lib/tomcat6/webapps/jenkins/WEB-INF/lib/jenkins-core-1.435.jar!/hudson/model/View/index.jelly:39:43: <st:include> PermGen space
org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:124)
org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:550)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:612)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
org.kohsuke.stapler.Stapler.service(Stapler.java:159)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
Я также установил менеджер (tomcat6-admin), и менеджер тоже выходит из строя, когда я добавляю sonar.war.
Я установил sonar, загрузив его из codehaus, настроив конфигурацию базы данных и создав war.
Кто-нибудь знает, почему это происходит, и может иметь решение?
Ответ №1:
В вашем исключении появляется :
PermGen space
org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
Проблема с permgen :
Эта ошибка возникает, когда JVM не хватает места в куче постоянного поколения
Чтобы исправить ошибку, вам нужно поместить -XX:MaxPermSize=<Y>m
(где <Y>
находится нужная вам память) в переменную среды CATALINA_OPTS.
Как вы этого добиваетесь? Следуйте этой статье (например) :
Как я могу увеличить объем памяти на моем сервере приложений?
Ответ №2:
Я настроил это на сервере RHEL с 8 ГБ оперативной памяти. Я обнаружил, что мне нужны (в catalina.sh
неинтерактивной оболочке или в tomcat) параметры виртуальной машины -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m
Мне также нужно было сбросить исполнителя maxThreads
, и minSpareThreads
в conf/server.xml файл (400 и 50 соответственно), в противном случае сервер выполнял обход.
Кстати, если вы используете виртуальные серверы, вы можете попробовать уже настроенную виртуальную машину SecureCI, которая настраивает полную среду Maven / Jenkins / Sonar CI из коробки. Нет никакой конфигурации, если ваша сборка зависит от Maven.