จะตั้งค่าตัวเลือก heap java (เช่น -Xmx) สำหรับ Tomcat 6 ภายใต้ Ubuntu 9.04 ได้อย่างไร


36

ฉันใช้ Tomcat โดยใช้แพ็คเกจ tomcat6 จาก Ubuntu 9.04 ซึ่งทำ daemon จาก Tomcat โดยใช้ jsvc ฉันต้องการทราบวิธีที่เหมาะสมในการตั้งค่าตัวเลือก heap Java เช่น-XmxTomcat ฉันต้องการทำให้การกำหนดค่าทุกที่ที่ถูกต้องที่สุดโวหารและที่ใดก็ตามที่มีโอกาสน้อยที่จะถูกเขียนทับโดยการปรับปรุงแพ็คเกจ Ubuntu

ตัวเลือกที่ฉันเห็นตอนนี้:

  • /etc/init.d/tomcat6โค้ดยากพวกเขาที่ไหนสักแห่งใน
  • /usr/share/tomcat6/bin/catalina.shโค้ดยากพวกเขาที่ไหนสักแห่งใน
  • สร้างบรรทัด/usr/share/tomcat6/bin/startup.shเพื่อตั้งค่า CATALINA_OPTS เพื่อให้มีค่าสถานะที่ต้องการแล้วส่งออก CATALINA_OPTS เป็นตัวแปรสภาพแวดล้อม (ดูเหมือนว่าจะถูกเลือกโดยcatalina.sh)

เสียงสุดท้ายตัวเลือกเช่นหนึ่งที่ดีที่สุดและก็สนับสนุน (ไม่มีคำอธิบายว่าทำไม) ที่เพิ่มขึ้น heapspace ของ Java ในสคริปต์ แต่ฉันต้องการได้รับความเห็นที่สอง ใครต้องการยืนยันว่าไม่มีวิธีที่ดีกว่านี้หรือ

คำตอบ:


37

อย่างน้อยใน Ubuntu 10.04, /etc/init.d/tomcat6 แหล่งข้อมูล / etc / default / tomcat6 หากมีอยู่ นั่นคือสิ่งที่ฉันวางทับของฉันและฉันเชื่อว่าเป็นวิธี "อนุมัติ" โดยทั่วไปเพื่อทำการเปลี่ยนแปลงดังกล่าว


7
/ etc / default / tomcat6 เป็นสถานที่ที่เหมาะสม
Amala

ควรกำหนดค่า +1 ในทุก/etcกรณีที่ทำได้
Marcus Downing

2
บน CentOS สถานที่ที่ฉันพบคือ /etc/tomcat6/tomcat6.conf
khylo

1
บน CentOS 6.4 /etc/tomcat6/tomcat6.confเป็นไฟล์ขนาดใหญ่และฉันไม่ได้ต้องการที่จะนำการปรับแต่งส่วนบุคคลของฉันในนั้นดังนั้นฉันสร้างและที่มาใน$CATALINA_HOME/bin/setenv.sh /usr/sbin/tomcat6หวังว่านี่จะช่วยให้ผู้ใช้ CentOS (ใช่ฉันรู้ว่าคำถามเดิมสำหรับ Ubuntu)
DuffJ

@ Khylo yep เอาฉันสักครู่เพื่อคิดออก ดูเหมือนว่าใน CentOS /etc/init.d/tomcat6 กำลังเรียกใช้ / usr / sbin / tomcat6 ซึ่งไม่ได้เรียก catalina.sh แต่เพียงเรียกคลาส bootstrap ของ Tomcat โดยตรง (ต่างจาก Ubuntu /etc/init.d/tomcat6 ที่) กำลังเรียก catalina.sh)
Eran Medan

16

หากคุณดูในไดเรกทอรี bin ของการติดตั้งคุณจะเห็นสคริปต์ catalina.sh หรือ. bat หากคุณดูสิ่งเหล่านี้คุณจะเห็นว่าพวกเขาเรียกใช้สคริปต์ setenv.sh หรือ setenv.bat ตามลำดับหากมีอยู่เพื่อตั้งค่าตัวแปรสภาพแวดล้อม ตัวแปรสภาพแวดล้อมที่เกี่ยวข้องมีการอธิบายไว้ในความคิดเห็นที่ด้านบนของ catalina.sh/bat หากต้องการใช้พวกเขาสร้างเช่นไฟล์ $ CATALINA_HOME / bin / setenv.sh ที่มีเนื้อหา

export JAVA_OPTS="-server -Xmx512m"

สำหรับ Windows คุณจำเป็นต้องมีใน setenv.bat สิ่งที่ต้องการ

set JAVA_OPTS=-server -Xmx768m

นี่เป็นความจริงจาก Tomcat 5.5 ถึง 7 คำตอบดั้งเดิมhttps://stackoverflow.com/questions/286007/how-to-tune-tomcat-5-5-jvm-memory-settings-without-using-the-configuration-progra


1
ทำงานได้ดีสำหรับระบบที่ไม่มี / etc / default / include เช่น FreeBSD
vadipp

7

มองหา/etc/tomcat6/tomcat6.confซึ่งมีไลค์ของ JAVA_OPTS แล้วและรอให้คุณไม่แสดงข้อคิดเห็น (แต่ถ้าคุณมีเลยฉันใช้ Centos ไม่ใช่ 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
สิ่งนี้ดูเหมือนจะถูกต้องสำหรับ tomcat รุ่น CentOS / yum / RPM สำหรับแพ็คเกจ Ubuntu / apt-get setenv.sh เป็นวิธีที่ถูกต้องที่จะไป AFAIK
Eran Medan

ใช่ KCD นั้นถูกต้องเพราะ centOS tomcat6.conf ทำงานได้ดี ตรวจสอบด้วยคำสั่งps aux | grep tomcatมันแสดงพารามิเตอร์ที่มีค่าฉันตั้ง
Manikandan Arunachalam

2

วิธีที่หรูหราที่สุดที่ฉันพบตอนนี้คือการแก้ไข /etc/init.d/tomcat6 และเพิ่มที่ด้านบนของไฟล์:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

ตัวเลือกอื่น ๆ ที่ฉันระบุไว้ในคำถามของฉันดูเหมือนจะไม่ทำงาน หลังจากศึกษาสคริปต์และทำการทดลองเพิ่มเติมตอนนี้ฉันสงสัยว่า /usr/share/tomcat6/bin/catalina.sh และ /usr/share/tomcat6/bin/startup.sh มีบทบาทใด ๆ ในการเริ่มต้น tomcat ด้วยแพ็คเกจ Ubuntu catcat6 แทน; /etc/init.d/tomcat6 จะแทนที่งานใด ๆ ที่อาจทำโดย catalina.sh/startup.sh

ฉันยังกังวลเล็กน้อยเกี่ยวกับการสูญเสียตัวเลือกการกำหนดค่าเหล่านี้ในการอัปเดตแพคเกจในอนาคต แต่ฉันเดาว่าถ้าเป็นเช่นนั้น


สามารถตั้งค่านี้ (ส่งออก) ใน. bashrc สำหรับผู้ใช้ที่คุณต้องการให้ Tomcat ทำงานได้หรือไม่? [โปรดแก้ตัวไวยากรณ์ที่น่าเกลียดน่ากลัว] ที่จะรอดชีวิตจากการอัปเดตแพ็คเกจ Tomcat ฯลฯ ฉันคิดว่าสิ่งอำนวยความสะดวก "เรียกใช้" ใน init จะเริ่มเชลล์ปกติสำหรับผู้ใช้นั้นและรับการมอบหมาย ดูเพิ่มเติมได้ที่howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
David J. Liszewski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.