Nơi đặt các tùy chọn heap java (ví dụ -Xmx) cho Tomcat 6 trong Ubuntu 9.04?


36

Tôi đang chạy Tomcat bằng gói tomcat6 từ Ubuntu 9.04, nó tạo ra một daemon từ Tomcat bằng jsvc. Tôi muốn biết cách thích hợp để đặt các tùy chọn heap Java như -Xmxcho Tomcat. Tôi muốn đặt cấu hình ở bất cứ nơi nào chính xác nhất về mặt phong cách và bất cứ nơi nào ít có khả năng bị ghi đè nhất bởi các bản cập nhật gói Ubuntu.

Các tùy chọn tôi thấy ngay bây giờ:

  • Mã cứng chúng ở đâu đó trong /etc/init.d/tomcat6.
  • Mã cứng chúng ở đâu đó trong /usr/share/tomcat6/bin/catalina.sh.
  • Tạo một dòng trong /usr/share/tomcat6/bin/startup.shđể đặt CATALINA_OPTS để có các cờ mong muốn, sau đó xuất CATALINA_OPTS làm biến môi trường. (Điều này có vẻ như sẽ được chọn bởi catalina.sh.)

Tùy chọn cuối cùng nghe có vẻ là lựa chọn tốt nhất và được ủng hộ (không giải thích lý do tại sao) tại Tăng vùng heap của Java trong tập lệnh khởi động Tomcat . Nhưng tôi muốn có một ý kiến ​​thứ hai. Bất cứ ai cũng muốn xác nhận rằng không có cách nào tốt hơn?

Câu trả lời:


37

Ít nhất là trên Ubuntu 10.04, /etc/init.d/tomcat6 nguồn / etc / default / tomcat6 nếu nó tồn tại. Đó là nơi tôi đặt phần ghi đè của mình và tôi tin rằng đó thường là cách "được phê duyệt" để thực hiện các thay đổi đó.


7
/ etc / default / tomcat6 là nơi thích hợp
Amala

Cấu hình +1 phải luôn luôn được thực hiện /etcnếu có thể.
Marcus Downing

2
Trên CentOS, vị trí tôi tìm thấy là /etc/tomcat6/tomcat6.conf
khylo

1
Trên CentOS 6.4, /etc/tomcat6/tomcat6.conflà một tệp lớn và tôi không muốn đặt các tùy chỉnh cá nhân của mình vào đó, vì vậy tôi đã tạo $CATALINA_HOME/bin/setenv.shvà cung cấp nó trong đó /usr/sbin/tomcat6. Hy vọng điều này sẽ giúp người dùng CentOS (vâng, tôi biết câu hỏi ban đầu là dành cho Ubuntu).
DuffJ

@khylo yep, tôi mất một chút thời gian để tìm ra nó. có vẻ như trong CentOS, /etc/init.d/tomcat6 đang gọi / usr / sbin / tomcat6, không gọi catalina.sh mà chỉ gọi trực tiếp lớp bootstrap tomcat (trái ngược với Ubuntu /etc/init.d/tomcat6 đang gọi catalina.sh)
Eran Medan

16

Nếu bạn nhìn vào thư mục bin của bản cài đặt, bạn sẽ thấy các tập lệnh catalina.sh hoặc .bat. Nếu bạn nhìn vào chúng, bạn sẽ thấy rằng chúng chạy một tập lệnh setenv.sh hoặc setenv.bat tương ứng, nếu nó tồn tại, để đặt các biến môi trường. Các biến môi trường có liên quan được mô tả trong các nhận xét ở đầu catalina.sh/bat. Để sử dụng chúng tạo, ví dụ: tệp $ CATALINA_HOME / bin / setenv.sh có nội dung

export JAVA_OPTS="-server -Xmx512m"

Đối với Windows, bạn sẽ cần, trong setenv.bat, một cái gì đó như

set JAVA_OPTS=-server -Xmx768m

Điều này đúng từ tomcat 5.5 đến 7. Câu trả lời gốc https://stackoverflow.com/questions/286007/how-to-tune-tomcat-5-5-jvm-memory-sinstall-without-USE-the-configuration-progra


1
Hoạt động tốt cho các hệ thống không có / etc / default / include, ví dụ FreeBSD.
vadipp

7

Hãy tìm /etc/tomcat6/tomcat6.conf có sẵn JAVA_OPTS và chờ bạn bỏ qua (nhưng chỉ khi bạn có nó, tôi mới sử dụng Centos chứ không phải Ubuntu).

# System-wide configuration file for tomcat6 services
# This will be sourced by tomcat6 and any secondary service
# Values will be overridden by service-specific configuration
# files in /etc/sysconfig
#
# Use this one to change default values for all services
# Change the service specific ones to affect only one service
# (see, for instance, /etc/sysconfig/tomcat6)
#
...
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"

4
Điều này có vẻ đúng với phiên bản tomOS của CentOS / yum / RPM. Đối với gói Ubuntu / apt-get, setenv.sh là cách phù hợp để đi AFAIK
Eran Medan

vâng, KCD là chính xác, vì centOS tomcat6.conf hoạt động tốt. Đã kiểm tra với lệnh ps aux | grep tomcat nó hiển thị tham số với các giá trị tôi đặt.
Manikandan Arunachalam

2

Cách thanh lịch nhất mà tôi tìm thấy cho đến nay là chỉnh sửa /etc/init.d/tomcat6 và thêm phần này ở đầu tệp:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

Các tùy chọn khác tôi nêu trong câu hỏi của tôi dường như không hoạt động. Sau khi nghiên cứu kịch bản và thử nghiệm thêm, bây giờ tôi nghi ngờ rằng /usr/share/tomcat6/bin/catalina.sh và /usr/share/tomcat6/bin/startup.sh đóng bất kỳ vai trò nào trong khởi động tomcat6 với gói Ubuntu tomcat6. Thay thế; /etc/init.d/tomcat6 thay thế hoàn toàn mọi công việc thường có thể được thực hiện bởi catalina.sh/startup.sh.

Tôi vẫn hơi lo lắng về việc mất các tùy chọn cấu hình này trong một số cập nhật gói trong tương lai, nhưng tôi đoán nếu điều đó xảy ra thì việc khôi phục chúng sẽ khá dễ dàng.


Điều này có thể được đặt (xuất) trong .bashrc cho bất kỳ người dùng nào bạn muốn tomcat chạy không? [xin vui lòng xin lỗi ngữ pháp khủng khiếp] Điều đó sẽ tồn tại các bản cập nhật cho gói Tomcat, v.v. Tôi giả sử cơ sở "run-as" trong init sẽ khởi động trình bao bình thường cho người dùng đó và nhận bài tập. Xem thêm howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
David J. Liszewski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.