โลโก้ Apache Tomcat
อันดับ 88 ใน Top 100 ภาษาโปรแกรมและ FrameworkApache License 2.0 (โอเพนซอร์ส)

Apache Tomcat คืออะไร และวิธีติดตั้งบน Cloud Server

Apache Tomcat คือเซิร์ฟเวอร์ที่รันแอปพลิเคชัน Java ซึ่งระบบองค์กรจำนวนมากในไทยยังใช้เป็นฐาน ทั้งระบบที่พัฒนาเองและซอฟต์แวร์สำเร็จรูปที่ส่งมอบเป็นไฟล์ WAR

ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 4 GB
ไลเซนส์
Apache License 2.0 (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

Apache Tomcat คืออะไร

Tomcat ทำหน้าที่รับคำขอ HTTP แล้วส่งต่อให้โค้ด Java ประมวลผลตามมาตรฐาน Servlet ระบบองค์กรที่พัฒนาด้วย Java จึงถูกส่งมอบเป็นไฟล์ WAR ที่นำไปวางใน Tomcat แล้วใช้งานได้ทันที

สิ่งที่มีผลต่อความเสถียรมากที่สุดคือการตั้งค่าหน่วยความจำของ Java แอปที่ตั้งหน่วยความจำสูงสุดไว้น้อยเกินไปจะล่มเมื่อผู้ใช้เยอะ ส่วนการตั้งสูงเกินกว่า RAM ของเครื่องจะทำให้ระบบปฏิบัติการปิดกระบวนการทิ้ง

ในการใช้งานจริง มักวาง Nginx ไว้ด้านหน้าเพื่อจัดการ HTTPS และเสิร์ฟไฟล์ Static แล้วส่งเฉพาะคำขอที่ต้องประมวลผลต่อไปให้ Tomcat ซึ่งช่วยทั้งประสิทธิภาพและความปลอดภัย

แผนผังการวางระบบ Apache Tomcat บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 443, 8080, 8005 ตัว Apache Tomcat และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 4 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Apache Tomcat ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Apache Tomcat

รันแอป Java มาตรฐาน

รองรับ Servlet และ JSP ตามมาตรฐานที่ระบบองค์กรจำนวนมากใช้

Deploy ด้วยไฟล์ WAR

วางไฟล์เดียวแล้วระบบพร้อมใช้งาน สะดวกกับซอฟต์แวร์ที่ส่งมอบเป็นแพ็กเกจ

จัดการหลายแอปในเครื่องเดียว

รันหลายแอปแยกเส้นทางกันได้บน Tomcat ตัวเดียว

ปรับจูนได้ละเอียด

ตั้งจำนวนเธรด ขนาดหน่วยความจำ และการจัดการการเชื่อมต่อได้ตามภาระงาน

เสถียรและมีมานาน

มีเอกสารและประสบการณ์การใช้งานในองค์กรจำนวนมาก

จูนหน่วยความจำและจำนวนเธรดของ Tomcat ให้ตรงกับภาระงาน

ค่าที่กระทบความเสถียรของแอป Java มากที่สุดคือขนาดหน่วยความจำสูงสุดที่ให้ Java ใช้ ตั้งน้อยเกินไปแอปจะล่มเมื่อผู้ใช้เยอะ ตั้งมากเกินกว่าที่เครื่องมีระบบปฏิบัติการจะปิดกระบวนการทิ้ง จุดที่เหมาะคือเหลือหน่วยความจำให้ระบบปฏิบัติการอย่างน้อยหนึ่งถึงสองกิกะไบต์

ค่าถัดมาคือจำนวนเธรดที่รับคำขอพร้อมกัน ค่านี้ควรสอดคล้องกับจำนวนการเชื่อมต่อฐานข้อมูลที่มี เพราะถ้ารับคำขอได้มากกว่าที่ฐานข้อมูลรองรับ คำขอส่วนเกินจะไปรอคิวจนผู้ใช้รู้สึกว่าระบบค้างทั้งที่ซีพียูยังว่าง

เมื่อปรับค่าแล้วควรวัดผลจากภาระงานจริงไม่ใช่จากตัวเลขในคู่มือ วิธีที่ตรงที่สุดคือเปิดการเก็บข้อมูลการใช้หน่วยความจำและเวลาตอบสนอง แล้วดูว่าค่าที่ปรับทำให้ดีขึ้นจริงหรือเพียงย้ายคอขวดไปที่อื่น

  • ตั้งหน่วยความจำเริ่มต้นและสูงสุดให้เท่ากัน เพื่อลดการขยายหน่วยความจำระหว่างทำงาน
  • จำนวนเธรดควรสัมพันธ์กับขนาดของแหล่งเชื่อมต่อฐานข้อมูล
  • เปิดการบันทึกเหตุการณ์เก็บกวาดหน่วยความจำไว้ เพื่อใช้หาสาเหตุเมื่อแอปหยุดตอบสนอง
  • ตั้งเวลาหมดอายุของการเชื่อมต่อ เพื่อไม่ให้คำขอค้างกินเธรดไว้ตลอด

ปัญหาที่พบบ่อยของแอป Java บนเซิร์ฟเวอร์และวิธีไล่หาต้นเหตุ

อาการที่พบมากที่สุดคือแอปทำงานได้ปกติหลายวันแล้วค่อย ๆ ช้าลงจนหยุดตอบสนอง ซึ่งมักเกิดจากการรั่วของหน่วยความจำในโค้ดหรือไลบรารี วิธียืนยันคือดูแนวโน้มการใช้หน่วยความจำระยะยาว ถ้ากราฟไต่ขึ้นเรื่อย ๆ โดยไม่กลับลงหลังการเก็บกวาด นั่นคือการรั่ว

อาการที่สองคือแอปตอบช้าเป็นช่วง ๆ ตรงกับจังหวะที่ระบบเก็บกวาดหน่วยความจำทำงานหนัก กรณีนี้แก้ด้วยการปรับขนาดหน่วยความจำและเลือกตัวเก็บกวาดที่เหมาะกับลักษณะงาน ไม่ใช่การเพิ่มซีพียู

อาการที่สามคือคำขอค้างเพราะรอทรัพยากรภายนอก เช่น ฐานข้อมูลหรือบริการที่เรียกใช้ไม่ตอบ วิธีป้องกันคือตั้งเวลาหมดอายุของทุกการเรียกออกภายนอกเสมอ เพราะการรอแบบไม่มีกำหนดจะกินเธรดจนระบบตันทั้งเครื่อง

ใช้ Apache Tomcat ทำอะไรได้บ้าง

  • ระบบองค์กรที่พัฒนาด้วย Java และส่งมอบเป็นไฟล์ WAR
  • ซอฟต์แวร์สำเร็จรูปสายองค์กรที่กำหนดให้รันบน Tomcat
  • ระบบเดิมที่ต้องย้ายจากเซิร์ฟเวอร์ในองค์กรขึ้นคลาวด์
  • สภาพแวดล้อมทดสอบสำหรับทีมพัฒนา Java

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Apache Tomcat 3 ระดับ เริ่มจาก 2 vCPU แรม 4 GB ดิสก์ NVMe 60 GB ไปจนถึง 8 vCPU ขึ้นไป แรม 16 GB ขึ้นไป ดิสก์ NVMe 250 GB ขึ้นไป โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เริ่มต้นแอปเดียว ผู้ใช้ภายในทีม2 vCPU4 GBNVMe 60 GB
แนะนำระบบงานองค์กรที่มีผู้ใช้ต่อเนื่อง4 vCPU8 GBNVMe 120 GB
องค์กรใหญ่หลายแอปหรือผู้ใช้พร้อมกันจำนวนมาก ควรแยกฐานข้อมูล8 vCPU ขึ้นไป16 GB ขึ้นไปNVMe 250 GB ขึ้นไป

ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ

วิธีติดตั้ง Apache Tomcat บน Cloud Server ของ THAI DATA CLOUD

ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server

สิ่งที่ต้องเตรียม

  • Java Runtime รุ่นที่ตรงกับ Tomcat และแอปที่จะรัน
  • Ubuntu Server 24.04 LTS หรือ Rocky Linux 9
  • RAM เผื่อสำหรับหน่วยความจำของ Java และของระบบปฏิบัติการ
  • Nginx สำหรับรับ HTTPS ไว้ด้านหน้า

ทดสอบบน Ubuntu Server 24.04 LTS

  1. 1

    ติดตั้ง Java

    sudo apt update
    sudo apt -y install openjdk-21-jdk
    java -version
  2. 2

    สร้างผู้ใช้และติดตั้ง Tomcat

    ดาวน์โหลดรุ่นที่ต้องการจากเว็บทางการ แล้วแตกไฟล์ไปที่ /opt/tomcat

    sudo adduser --system --home /opt/tomcat --shell /bin/false tomcat
    sudo mkdir -p /opt/tomcat
    cd /tmp
    curl -LO https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin/apache-tomcat-10.1.34.tar.gz
    sudo tar xzf apache-tomcat-10.1.34.tar.gz -C /opt/tomcat --strip-components=1
    sudo chown -R tomcat:tomcat /opt/tomcat
  3. 3

    ตั้งค่าหน่วยความจำของ Java

    สร้างไฟล์ /opt/tomcat/bin/setenv.sh และตั้งค่าให้เหลือ RAM สำหรับระบบปฏิบัติการอย่างน้อย 1 ถึง 2 GB

    export CATALINA_OPTS="-Xms2G -Xmx4G -XX:+UseG1GC"
  4. 4

    ตั้งเป็นบริการของระบบ

    [Unit]
    Description=Apache Tomcat
    After=network.target
    
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    Environment="JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64"
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  5. 5

    Deploy แอปด้วยไฟล์ WAR

    คัดลอกไฟล์ WAR ไปที่โฟลเดอร์ webapps แล้ว Tomcat จะแตกไฟล์และเปิดใช้งานให้เอง

    sudo cp myapp.war /opt/tomcat/webapps/
    sudo systemctl restart tomcat
    sudo tail -f /opt/tomcat/logs/catalina.out
  6. 6

    วาง Nginx ไว้ด้านหน้าพร้อม HTTPS

    server {
      listen 443 ssl;
      server_name app.example.com;
    
      location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
    }

ลบหรือปิดการเข้าถึงแอปตัวอย่างและหน้าจัดการที่มาพร้อม Tomcat ในระบบ Production เพราะเป็นเป้าหมายที่บอตสแกนหาอยู่เสมอ

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
443TCPHTTPS ผ่าน Nginx
8080TCPพอร์ตของ Tomcat (ควรเปิดเฉพาะภายในเครื่อง)
8005TCPพอร์ตสั่งปิดระบบ (ควรปิดการใช้งาน)

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • ลบแอปตัวอย่างและหน้าจัดการที่มาพร้อมการติดตั้งออกจากระบบจริง
  • ปิดพอร์ตสั่งปิดระบบหรือเปลี่ยนค่าที่ใช้สั่งให้เดาไม่ได้
  • รัน Tomcat ด้วยผู้ใช้ที่ไม่ใช่ root และจำกัดสิทธิ์โฟลเดอร์
  • ให้ Tomcat ฟังเฉพาะ 127.0.0.1 และเปิดสู่ภายนอกผ่าน Nginx
  • อัปเดต Tomcat และ Java ตามรอบแพตช์ความปลอดภัย

ทำไมควรรัน Apache Tomcat บน Cloud Server ของ THAI DATA CLOUD

Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง

ยกระบบ Java เดิมขึ้น Cloud Server ในไทยได้โดยไม่ต้องแก้โค้ด เพียงย้ายไฟล์ WAR และตั้งค่าเชื่อมฐานข้อมูลใหม่

ปรับ RAM ได้ตรงกับที่แอป Java ต้องใช้ ซึ่งเป็นตัวแปรสำคัญที่สุดของงานลักษณะนี้

ต่อกับฐานข้อมูลองค์กรในวง Private Network โดยไม่ต้องเปิดพอร์ตออกอินเทอร์เน็ต

คำถามที่พบบ่อยเกี่ยวกับ Apache Tomcat

Tomcat ต่างจาก Spring Boot อย่างไร

Spring Boot เป็นเฟรมเวิร์กที่ฝัง Tomcat ไว้ในตัวแอปแล้ว จึงรันเป็นไฟล์เดียวได้โดยไม่ต้องติดตั้ง Tomcat แยก ส่วนการติดตั้ง Tomcat แยกยังจำเป็นเมื่อต้องรันแอปที่ส่งมอบเป็นไฟล์ WAR ตามมาตรฐานเดิม

ตั้งหน่วยความจำเท่าไหร่ดี

ตั้งค่าสูงสุดให้เหลือ RAM สำหรับระบบปฏิบัติการอย่างน้อยหนึ่งถึงสองกิกะไบต์ เช่น เครื่อง RAM 8 GB อาจตั้งสูงสุดไว้ราว 4 ถึง 6 GB แล้วติดตามการใช้งานจริงเพื่อปรับให้เหมาะ

แอปล่มบ่อยเพราะอะไร

สาเหตุที่พบบ่อยคือหน่วยความจำไม่พอและการรั่วของหน่วยความจำในแอป ให้ดู Log ของ Tomcat และเปิดการเก็บข้อมูลการใช้หน่วยความจำเพื่อหาต้นเหตุ พร้อมตั้งให้บริการรีสตาร์ตอัตโนมัติระหว่างที่แก้

ให้เราติดตั้ง Apache Tomcat ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด