Ubuntu上JSP项目的资源优化实践
一 系统层与反向代理优化
gzip on;
gzip_types text/plain text/css application/javascript application/json;
brotli on;
brotli_types text/plain text/css application/javascript application/json;
server {
listen 80;
server_name your.domain;
location /static/ {
alias /opt/app/static/;
expires 1y;
add_header Cache-Control "public, immutable";
etag on;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
以上做法可减少请求、压缩传输、加速静态资源访问,是高性价比的第一步优化。二 应用服务器 Tomcat 配置优化
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="400" minSpareThreads="50"
acceptCount="100"
keepAliveTimeout="15000"
maxKeepAliveRequests="100" />
这些配置能提升并发处理能力、降低容器自身开销并改善稳定性。三 JVM 与内存优化
export JAVA_OPTS="$JAVA_OPTS -Xms1g -Xmx2g"
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/tomcat/logs/gc.log"
export JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/tomcat/logs/"
export JAVA_OPTS="$JAVA_OPTS -XX:MaxMetaspaceSize=256m"
四 代码与数据访问层优化
// 缓存热点数据(示例)
String key = "hot:product:1001";
Product p = redis.get(key);
if (p == null) {
p = productDao.findById(1001);
redis.setex(key, 3600, p); // 1小时
}
通过减少页面计算、复用数据与降低数据库交互频次,能显著提升响应速度与稳定性。五 监控、压测与容量规划