温馨提示×

centos服务器jsp配置技巧有哪些

小樊
40
2025-12-29 10:49:42
栏目: 云计算

CentOS 服务器 JSP 配置技巧

一 基础环境搭建与部署

  • 安装 JDK(优先 OpenJDK 8/11):执行 yum install -y java-11-openjdk-devel,用 java -version 验证;配置 JAVA_HOME(推荐写入 /etc/profile.d/java.sh):export JAVA_HOME=/usr/lib/jvm/java-11-openjdkexport PATH=$JAVA_HOME/bin:$PATH,执行 source /etc/profile.d/java.sh 生效。
  • 安装 Tomcat 9/10(建议以非 root 运行):从官网下载解压至 /opt/tomcat,创建系统用户 tomcat 并赋权;创建 systemd 服务(示例关键项):
    • Environment: JAVA_HOME, CATALINA_HOME, CATALINA_BASE
    • ExecStart/ExecStop 指向 bin/startup.sh/shutdown.sh
    • User=tomcat, Restart=always, RestartSec=10
      执行 systemctl daemon-reload && systemctl enable --now tomcat
  • 部署 WAR:将应用打包为 WAR 放入 webapps/,Tomcat 会自动解压部署;访问 http://<ip>:8080/<app>/ 验证。
  • 防火墙放行:如启用 firewalld,执行 firewall-cmd --zone=public --add-port=8080/tcp --permanent && firewall-cmd --reload

二 性能优化要点

  • 系统层
    • 提升文件描述符:在 /etc/security/limits.conftomcat 设置 nofile 65536;在 /etc/sysctl.conf 设置 fs.file-max=65536net.core.somaxconn=65535,执行 sysctl -p
    • 网络与内存:按需开启 net.ipv4.tcp_tw_reuse=1;禁用透明大页(THP)以避免 GC 停顿与碎片:echo never > /sys/kernel/mm/transparent_hugepage/{enabled,defrag}
  • JVM 层
    • 堆与元空间:设置 -Xms-Xmx 等值(如 2G/4G),避免运行期扩缩堆抖动;设置 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
    • GC 策略:JDK 8 优先 G1GC-XX:+UseG1GC),吞吐优先可用 ParallelGC;加入 -Djava.security.egd=file:/dev/./urandom-Djava.awt.headless=true 降低阻塞与启动耗时。
  • Tomcat 连接器
    • 使用 NIO/NIO2protocol="org.apache.coyote.http11.Http11Nio2Protocol";合理设置 maxThreads(如 200–500)、minSpareThreadsacceptCount(与 somaxconn 匹配)、connectionTimeout=20000enableLookups=falsecompression=oncompressionMinSize=2048URIEncoding=UTF-8;Tomcat 9+ 可按需开启 HTTP/2
  • 应用与数据层
    • 页面与代码:减少 JSP 中 Java 脚本片段,优先 EL/JSTL;不需要会话的页面加 <%@ page session="false" %>;启用 GZIP 压缩;对稳定页面启用 JSP 预编译load-on-startup
    • 数据访问:使用高性能连接池(如 HikariCP/DBCP2),优化 SQL 并建立合适索引;热点数据引入 Redis/Memcached/Ehcache 缓存。

三 安全与运维实践

  • 运行身份与最小权限:以 tomcat 非 root 用户运行;目录权限最小化。
  • 精简默认应用与隐藏版本:删除 webappsdocs/examples/manager;在 server.xml 的 Connector 上添加 server="Apache" 隐藏版本信息。
  • 协议与端口:未使用 AJP 时注释 AJP 连接器(端口 8009);必要时仅开放 8080/8443
  • 自动部署与扫描:生产环境将 HostautoDeploy 设为 false,避免频繁目录扫描与热部署风险。
  • 日志与排障:关注 $CATALINA_HOME/logs/catalina.outlocalhost_access_log;乱码问题在 JSP 顶部声明 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>;端口冲突检查 server.xml<Connector port="8080">;权限问题使用 chmod/chown 修正。

四 快速落地清单与示例配置

  • 快速清单
    • 调整 limits.confsysctl.conf,提升 FD 与网络队列;部署后用 ab/wrk 做基线压测。
    • 关闭开发特性:禁用自动重载;不需要会话的页面加 session="false"
    • 打开 Tomcat 压缩与连接优化:compression=onenableLookups=falsemaxThreads/acceptCount 合理配比。
    • 配置 JVM-Xms/-Xmx 等值、启用 G1GC、加入 -Djava.security.egd=file:/dev/./urandom-Djava.awt.headless=true
    • 数据层:接入 HikariCP/DBCP2,优化 SQL 与索引;热点数据引入 Redis/Memcached
    • 前端与静态资源:合并/压缩 CSS/JS、设置缓存、使用 CDN;必要时启用 HTTP/2
  • 示例配置
    • server.xml 连接器(示例)
      <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" />
      
    • systemd 服务片段(示例)
      [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
      

0