CentOS 服务器 JSP 配置技巧
一 基础环境搭建与部署
yum install -y java-11-openjdk-devel,用 java -version 验证;配置 JAVA_HOME(推荐写入 /etc/profile.d/java.sh):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk 与 export PATH=$JAVA_HOME/bin:$PATH,执行 source /etc/profile.d/java.sh 生效。tomcat 并赋权;创建 systemd 服务(示例关键项):
JAVA_HOME, CATALINA_HOME, CATALINA_BASEbin/startup.sh/shutdown.shUser=tomcat, Restart=always, RestartSec=10systemctl daemon-reload && systemctl enable --now tomcat。webapps/,Tomcat 会自动解压部署;访问 http://<ip>:8080/<app>/ 验证。firewall-cmd --zone=public --add-port=8080/tcp --permanent && firewall-cmd --reload。二 性能优化要点
/etc/security/limits.conf 为 tomcat 设置 nofile 65536;在 /etc/sysctl.conf 设置 fs.file-max=65536、net.core.somaxconn=65535,执行 sysctl -p。net.ipv4.tcp_tw_reuse=1;禁用透明大页(THP)以避免 GC 停顿与碎片:echo never > /sys/kernel/mm/transparent_hugepage/{enabled,defrag}。-Xms 与 -Xmx 等值(如 2G/4G),避免运行期扩缩堆抖动;设置 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m。-XX:+UseG1GC),吞吐优先可用 ParallelGC;加入 -Djava.security.egd=file:/dev/./urandom 与 -Djava.awt.headless=true 降低阻塞与启动耗时。protocol="org.apache.coyote.http11.Http11Nio2Protocol";合理设置 maxThreads(如 200–500)、minSpareThreads、acceptCount(与 somaxconn 匹配)、connectionTimeout=20000、enableLookups=false、compression=on、compressionMinSize=2048、URIEncoding=UTF-8;Tomcat 9+ 可按需开启 HTTP/2。<%@ page session="false" %>;启用 GZIP 压缩;对稳定页面启用 JSP 预编译 或 load-on-startup。三 安全与运维实践
webapps 下 docs/examples/manager;在 server.xml 的 Connector 上添加 server="Apache" 隐藏版本信息。Host 的 autoDeploy 设为 false,避免频繁目录扫描与热部署风险。$CATALINA_HOME/logs/catalina.out、localhost_access_log;乱码问题在 JSP 顶部声明 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>;端口冲突检查 server.xml 的 <Connector port="8080">;权限问题使用 chmod/chown 修正。四 快速落地清单与示例配置
session="false"。compression=on、enableLookups=false、maxThreads/acceptCount 合理配比。-Xms/-Xmx 等值、启用 G1GC、加入 -Djava.security.egd=file:/dev/./urandom 与 -Djava.awt.headless=true。<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="500" minSpareThreads="50" maxSpareThreads="200"
acceptCount="100"
connectionTimeout="20000"
enableLookups="false"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
URIEncoding="UTF-8" />
[Service]
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms2g -Xmx2g -server -XX:+UseG1GC -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
Restart=always
RestartSec=10