2012-01-29 6 views
10

Gần đây tôi đã bắt đầu nhúng Tomcat 7 cho các bài kiểm tra tích hợp của tôi, thay vì Tomcat 6 vì tôi cần một số tính năng và đó là mục tiêu của chúng tôi. Hiệu suất là rất chậm so với Tomcat 6 nhúng. Nó mất khoảng 20 giây để khởi động máy chủ. Đây là mã tôi đang sử dụng:Embedded Tomcat 7 chậm so sánh với Tomcat 6

Tomcat tomcat = new Tomcat(); 
tomcat.setPort(port); 
tomcat.setSilent(true); 

tomcat.setBaseDir("."); 
tomcat.getHost().setAppBase(webappDir); 

tomcat.addWebapp(context, "");  
tomcat.start(); 

Có ai khác có kinh nghiệm này hoặc có đề xuất cải thiện hiệu suất không? Tôi đang chạy thử nghiệm trên Windows 7, Linux Mint và Ubuntu.

+3

Bạn * chỉ * có nghĩa là thời gian khởi động lâu hơn? (Đó là một thước đo hiệu suất khá hẹp đối với các máy chủ thường được dự kiến ​​sẽ tăng lên trong nhiều ngày, vài tuần hoặc vài tháng mà không cần khởi động lại ...) –

+0

Tôi khuyên bạn nên sử dụng Jetty được nhúng thay thế. Tôi đã không thử nhúng Tomcat, nhưng Jettu chạy đủ nhanh. – Anton

+1

Jon, nó được nhúng, vì vậy thời gian khởi động là điều quan trọng ở đây. Người ta hy vọng rằng máy chủ nhúng hơi nhẹ hơn bình thường. –

Trả lời

15

Có thể quá chậm do quét đường dẫn lớp cần thiết cho cấu hình dựa trên chú thích của Servlet 3.0. Nếu bạn không cần các tính năng này, hãy thử thêm metadata-complete="true" vào web.xml của bạn.

+1

Đúng, đã làm điều đó! Có thời gian khởi động xuống đến 6 giây: –

+0

Làm việc cho tôi. Câu trả lời tuyệt vời, cảm ơn. – Danijel

+1

Điều này có tắt hoàn toàn cấu hình chú thích không? Hay nó chỉ vô hiệu hóa 'quét' nhưng cấu hình dựa trên chú thích sẽ vẫn hoạt động? – ziggy

5

Đây là cách nó thực sự trông trong tiêu đề web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app metadata-complete="true" id="WebApp_ID" version="3.0"... 

Một số thông tin thêm ở đây: Tomcat and Servlet 3.0 Web Configuration