Установка Sonar и Jenkins на Tomcat

#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.