Cấu hình Tomcat với APR và Tomcat Native trên CentOS 7

Trong môi trường mạng chậm, nếu số lượng luồng của Tomcat vượt quá 300 mà không cấu hình APR, các luồng này sẽ nhanh chóng bị chiếm dụng hoàn toàn, dẫn đến các yêu cầu tiếp theo phải chờ đợi. Tuy nhiên, khi đã tích hợp APR, Tomcat có thể gọi thư viện liên kết động lõi của Apache HTTP Server thông qua JNI để xử lý các hoạt động đọc tệp hoặc truyền tải mạng, nhờ đó giảm đáng kể số lượng luồng đồng thời từ mức 300 xuống chỉ còn vài chục, cho phép các yêu cầu mới vào hệ thống một cách mượt mà hơn.

Tomcat sử dụng APR để cải thiện khả năng mở rộng, hiệu suất và tích hợp với công nghệ máy chủ bản địa, giúp nâng cao hiệu suất tổng thể. Tomcat Native cung cấp các kỹ thuật tối ưu hóa cụ thể trên nền tảng thực thi, dựa trên công nghệ APR (Apache Portable Runtime). Sau khi áp dụng Tomcat Native, Tomcat có thể tương tác tốt hơn với hệ điều hành và giống như Apache, có thể hoạt động như một web server hiệu quả hơn, tận dụng giao diện APR của Apache để tăng cường hiệu suất trong việc xử lý các trang tĩnh.

  1. Giới thiệu về ba chế độ chạy của Tomcat

Tomcat có ba chế độ chạy chính: bio, nio và apr.

  • Bio (Blocking I/O): Sử dụng thao tác I/O chặn, nghĩa là Tomcat dùng phương thức I/O truyền thống của Java (java.io và các gói con), mỗi yêu cầu đều cần tạo ra một luồng riêng để xử lý, dẫn đến chi phí lớn và không phù hợp với các tình huống có yêu cầu đồng thời cao. Đây là chế độ mặc định của Tomcat và cũng là chế độ có hiệu suất thấp nhất trong ba chế độ.

  • Nio: Được giới thiệu từ Java SE 1.4, NIO (Non-blocking I/O) dựa trên bộ đệm và hỗ trợ thao tác I/O không chặn, cung cấp hiệu suất xử lý song song cao hơn so với Bio. Đây là chế độ mặc định của Tomcat 8.

  • Apr (Apache Portable Runtime): Là thư viện hỗ trợ của Apache HTTP Server, giải quyết vấn đề I/O bất đồng bộ ở cấp hệ điều hành, giúp tăng hiệu suất xử lý đồng thời của máy chủ. Đây là lựa chọn tối ưu cho môi trường sản xuất của Tomcat.

  1. Cài đặt Tomcat Native

Lưu ý rằng Tomcat Native đã được tích hợp sẵn trong thư mục bin của phiên bản Tomcat 8.

Cài đặt các gói phụ thuộc:

[root@server ~]# yum -y install libapr-devel gcc-c++ openssl-devel

Giải nén và biên dịch gói Tomcat Native:

[root@server ~]# tar xvf /usr/local/tomcat8.5/bin/native-lib.tar.gz -C /usr/src/
[root@server ~]# cd /usr/src/tomcat-native-1.2.20-src/native/
[root@server native]# ./configure --with-apr=/usr/lib64/ --with-java-home=/usr/java/jdk1.8.0_201 --with-ssl
[root@server native]# make && make install

Sau khi cài đặt, thêm đường dẫn thư viện vào file cấu hình:

[root@server native]# echo "/usr/local/apr/lib" >> /etc/ld.so.conf
[root@server native]# ldconfig

Thêm biến môi trường để đảm bảo thư viện được nhận diện đúng:

[root@server native]# echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib" >> /etc/profile.d/env.sh
[root@server native]# source /etc/profile.d/env.sh
  1. Cấu hình APR

Sửa đổi giao thức trong file server.xml:

[root@server native]# vim /usr/local/tomcat8.5/conf/server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" />

Tham chiếu tới APR trong file catalina.sh:

[root@server native]# vim /usr/local/tomcat8.5/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

Khởi động lại Tomcat:

[root@server native]# kill $(ps aux | grep tomcat | grep -v grep | awk '{print $2}')
[root@server native]# /usr/local/tomcat8.5/bin/startup.sh

Kiểm tra log để xác nhận thành công:

[root@server ~]# grep "Loaded APR" /usr/local/tomcat8.5/logs/catalina.out

Nếu thấy dòng "Loaded APR based Apache Tomcat Native library", thì quá trình cài đặt đã thành công.

Thẻ: CentOS Tomcat APR TomcatNative JavaServer

Đăng vào ngày 6 tháng 7 lúc 06:59