Gần đây chúng tôi đã chuyển sang Tomcat từ WebSphere cho ứng dụng của mình.
Chúng tôi đang sử dụng:
JDK 1.8 Bản dựng 191 và
Tomcat 9.0.50.
Hầu hết ứng dụng là sự kết hợp giữa Servlet/JSP và một vài ứng dụng web với Spring MVC, nó sử dụng một số đa luồng
Bây giờ các máy chủ thử nghiệm của chúng tôi triển khai hoàn toàn tốt. Nó khá zippy. Nhưng khi triển khai trên Tomcat trên Sản xuất, nó chỉ dừng lại ở tiếng rít.
Ví dụ: Đây là kết quả từ Máy chủ thử nghiệm:
26-Aug-2021 08:56:11.585 THÔNG TIN [chính] org.apache.catalina.startup.HostConfig.deployWAR Triển khai kho lưu trữ ứng dụng web [/opt/app/tomcat/webapps/cdsrs.war]
26-Aug-2021 08:56:13.750 THÔNG TIN [chính] org.apache.jasper.servlet.TldScanner.scanJars Ít nhất một tệp JAR đã được quét để tìm TLD nhưng không chứa TLD nào. Bật ghi nhật ký gỡ lỗi cho trình ghi nhật ký này để có danh sách đầy đủ các JAR đã được quét nhưng không tìm thấy TLD nào trong đó. Bỏ qua các JAR không cần thiết trong quá trình quét có thể cải thiện thời gian khởi động và thời gian biên dịch JSP.
26-Aug-2021 08:56:14.091 THÔNG TIN [chính] org.apache.catalina.startup.HostConfig.deployWAR Việc triển khai kho lưu trữ ứng dụng web [/opt/app/tomcat/webapps/cdsrs.war] đã hoàn tất sau [2.505] bệnh đa xơ cứng
Và đây là ứng dụng web tương tự trên Sản xuất:
26-Aug-2021 09:26:18.016 THÔNG TIN [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Thư mục triển khai ứng dụng web [/opt/app/tomcat/webapps/cdsrs]
26-Aug-2021 09:26:19.870 THÔNG TIN [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars Ít nhất một tệp JAR đã được quét để tìm TLD nhưng không chứa TLD nào. Bật ghi nhật ký gỡ lỗi cho trình ghi nhật ký này để có danh sách đầy đủ các JAR đã được quét nhưng không tìm thấy TLD nào trong đó. Bỏ qua các JAR không cần thiết trong quá trình quét có thể cải thiện thời gian khởi động và thời gian biên dịch JSP.
26-Aug-2021 09:28:52.569 THÔNG TIN [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Triển khai thư mục ứng dụng web [/opt/app/tomcat/webapps/cdsrs] đã hoàn tất trong [ 154,553] mili giây
Tôi có bộ này trên tệp setenv.sh:
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:gc/gc.log"
xuất CATALINA_OPTS="$CATALINA_OPTS -Xms3072M"
xuất CATALINA_OPTS="$CATALINA_OPTS -Xmx8192M"
xuất CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=3072M"
Và tôi đã định cấu hình server.xml của mình với:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpHeaderSize="65536" maxThreads="150" SSLEnabled="true" acceptorThreadCount="4" >
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.jks" certificateKeystorePassword="some_password" type="RSA" />
</SSLHostConfig>
</Connector>
<Connector address="SERVER_HOSTNAME" port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="65536" connectionTimeout="20000" redirectPort="8443" acceptorThreadCount="4" />
Và Động cơ
đánh dấu như:
<Engine name="Catalina" defaultHost="localhost" startStopThreads="0">
Chưa kể, ứng dụng cũng chạy rất chậm trên đó! Thời gian tải trang hiện đã tăng khoảng 200-300% so với khi nó chạy trên WebSphere. Am i thiếu cái gì ở đây? Một số trợ giúp về điều này sẽ thực sự được đánh giá cao. Cảm ơn!