2011-10-21 74 views
5

我有一個tomcat服務器,我希望在上面安裝Jenkins和Sonar。我處於debian分發版,因此我通過apt-get獲得了tomcat6和Jenkins。當我將jenkins.war複製到我的tomcat6/webapps目錄時,一切運行良好。然而,當我複製到sonar.war的Tomcat6/webapps中,聲吶工作正常,但詹金斯拋出一個錯誤500:在Tomcat上安裝Sonar和Jenkins

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。

我已經安裝了聲納,通過從codehaus下載聲納,設置數據庫配置和構建戰爭。

有誰知道爲什麼會發生這種情況,並可能有解決方案嗎?

回答

7

在你的例外,它出現:

PermGen space 
org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112) 

有與PermGen的一個問題:

當JVM在永久代堆運行的空間,會出現此錯誤

要修復錯誤,您需要在CATALINA_OPTS環境中放入-XX:MaxPermSize=<Y>m(其中<Y>是您想要的內存) ronment變量。

你是如何做到這一點的?按照此文章(例如):

How can I increase memory in my application server ?

+0

紅眼!非常感謝,這正是發生的事情。 – user995032

+0

不要忘記投票+接受答案;) –

1

我這有8GB的內存在RHEL服務器上配置。我發現我需要(在catalina.sh或非交互式shell運行Tomcat)的-Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

我還需要重新設置執行人maxThreads,並在conf/server.xml文件minSpareThreads VM選項(400和50分別地) ,否則服務器爬網。順便說一下,如果你使用的是虛擬服務器,你可以嘗試一個已經配置的虛擬機SecureCI,這個虛擬機建立了一個完整的Maven/Jenkins/Sonar CI環境。如果你的構建依賴於Maven,那麼沒有配置。