温馨提示×

ubuntu jsp怎么优化性能

小樊
45
2026-10-21 11:31:18
栏目: 编程语言

在 Ubuntu + JSP(通常是 Tomcat/Java Web) 环境下,优化性能可以从 系统、Tomcat、JSP/代码、数据库、缓存 多个层面入手。下面给你一份实用且可落地的优化清单。


一、Ubuntu 系统层优化

1. 调整文件描述符限制

JSP/Tomcat 高并发时会耗尽 fd:

ulimit -n 65535

永久生效:

# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2. 内核参数优化(高并发)

编辑 /etc/sysctl.conf:

net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

应用:

sysctl -p

3. 使用 SSD / 调整 IO 调度

cat /sys/block/sda/queue/scheduler

推荐:mq-deadline 或 none(云服务器)


二、Tomcat 性能优化(重点)

1. 调整 connector(server.xml)

示例(NIO + 多线程):

<Connector
    port="8080"
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    maxThreads="500"
    minSpareThreads="50"
    acceptCount="1000"
    connectionTimeout="20000"
    enableLookups="false"
    compression="on"
/>

⚠️ enableLookups=false 可避免 DNS 反向解析


2. JVM 参数优化

修改 bin/catalina.sh 或 setenv.sh:

JAVA_OPTS="-Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

建议:

  • 堆内存 = 物理内存的 50%~70%
  • 使用 G1(JDK 8+)

3. 禁用不必要的组件

  • 删除 webapps 下的:
    • docs
    • examples
    • manager(如不用)

三、JSP 层优化

1. 开启 JSP 预编译

避免第一次访问慢:

<servlet>
  <servlet-name>jsp</servlet-name>
  <init-param>
    <param-name>development</param-name>
    <param-value>false</param-value>
  </init-param>
</servlet>

或在 conf/web.xml 中:

<param-name>jspPrecompile</param-name>
<param-value>true</param-value>

2. 减少 Scriptlet(<% %>)

✅ 使用:

  • JSTL
  • EL 表达式

❌ 避免:

<%
  // 大量 Java 逻辑
%>

3. 启用页面缓存

<%@ page cache="true" %>
<%@ page buffer="8kb" autoFlush="true" %>

四、代码与架构优化

1. 使用连接池(必须)

如:HikariCP / DBCP2

maximumPoolSize=20

2. 静态资源分离

  • CSS / JS / 图片 → Nginx
  • JSP → Tomcat

Nginx 示例:

location ~ \.(js|css|png)$ {
    root /var/www/static;
    expires 30d;
}

3. 使用缓存

  • 页面级:EHCache / Redis
  • 数据级:Redis / Memcached

五、数据库优化(常见瓶颈)

  • 加索引
  • 避免 SELECT *
  • 慢查询日志:
SHOW VARIABLES LIKE 'slow_query%';

六、监控与压测

工具

  • top / htop
  • jstack
  • jvisualvm
  • ab / wrk

压测示例:

ab -n 10000 -c 200 http://localhost:8080/index.jsp

七、常见性能问题速查

现象 原因
首访问慢 JSP 未预编译
CPU 高 GC 频繁 / 死循环
内存涨 连接未释放
响应慢 数据库无索引

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Tomcat 版本
  • 并发量 / 服务器配置
  • 是否有 Nginx

我可以直接给你一套针对性配置方案。

0 踩