2011-10-21 40 views
5

Tôi có một máy chủ tomcat và tôi muốn cài đặt Jenkins và Sonar trên đó. Tôi đang trên một sự phân biệt debian, do đó tôi có tomcat6 và Jenkins thông qua apt-get. Khi tôi sao chép jenkins.war vào thư mục tomcat6/webapps của tôi, mọi thứ đều ổn. Tuy nhiên khi tôi copy sonar.war để tomcat6/webapps, sonar hoạt động tốt, nhưng Jenkins ném một lỗi 500:Cài đặt Sonar và Jenkins trên Tomcat

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) 

Tôi đã cũng cài đặt người quản lý (tomcat6-admin) và người quản lý là không quá khi tôi thêm sonar.war.

Tôi đã cài đặt sonar bằng cách tải xuống từ codehaus, thiết lập cấu hình cơ sở dữ liệu và xây dựng chiến tranh.

Có ai biết tại sao điều này xảy ra và có thể có giải pháp không?

Trả lời

7

Trong ngoại trừ của bạn, nó sẽ xuất hiện:

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

Có một vấn đề với các PermGen:

Lỗi này xảy ra khi JVM chạy ra khỏi không gian trong đống thế hệ vĩnh viễn

Để khắc phục lỗi, bạn cần đặt số -XX:MaxPermSize=<Y>m (trong đó <Y> là bộ nhớ bạn muốn) trong CATALINA_OPTS envi biến ronment.

Làm thế nào để bạn đạt được điều này? Thực hiện theo bài viết này (ví dụ):

How can I increase memory in my application server ?

+0

Bullseye !!! Cảm ơn rất nhiều, đó là chính xác những gì happend. – user995032

+0

Đừng quên bỏ phiếu + chấp nhận câu trả lời;) –

1

tôi đã cấu hình này trên một máy chủ với 8Gb RAM RHEL. Tôi tìm thấy tôi cần thiết (trong catalina.sh hoặc vỏ không tương tác chạy tomcat) VM tùy chọn của -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

Tôi cũng cần thiết để thiết lập lại các Executor maxThreads, và minSpareThreads trong file conf/server.xml (400 và 50 tương ứng) , nếu không thì máy chủ sẽ được thu thập thông tin.

Bằng cách này, nếu bạn đang sử dụng Máy chủ ảo, bạn có thể thử VM đã được cấu hình, SecureCI, thiết lập môi trường hoàn chỉnh Maven/Jenkins/Sonar CI ra khỏi hộp. Không có cấu hình nếu xây dựng của bạn dựa trên Maven.

Các vấn đề liên quan