系统级优化
firewalld、NetworkManager等非必需服务(如systemctl stop firewalld && systemctl disable firewalld),减少后台进程对CPU、内存的占用。/etc/sysctl.conf优化网络性能,例如增加net.ipv4.tcp_max_syn_backlog=8192(提升TCP连接队列容量)、net.ipv4.tcp_fin_timeout=30(缩短未完成连接的超时时间);调整vm.swappiness=10(降低Swap使用率,优先使用物理内存)。修改后执行sysctl -p使配置生效。ext4文件系统(支持更快的读写和日志功能),挂载时添加noatime选项(避免每次访问文件都更新访问时间戳),减少磁盘I/O开销。例如在/etc/fstab中修改对应分区挂载参数为defaults,noatime。permissive模式(仅记录违规不阻止)或完全禁用(编辑/etc/selinux/config,设置SELINUX=permissive,然后重启服务器),避免权限检查带来的额外性能损耗。JSP页面与应用层优化
<% %>)、表达式(<%= %>)从JSP中移除,转移至Servlet或Java类中处理业务逻辑;使用JSTL(JSP标准标签库)和EL(表达式语言)替代原生Java代码,例如用<c:forEach>代替<% for(...) %>,提高页面渲染效率。Tomcat的server.xml配置GZIP压缩(在Connector标签中添加compression="on"、compressableMimeType="text/html,text/css,application/javascript"),或使用Apache的mod_deflate模块,将JSP输出压缩后再传输,减少网络带宽占用(通常可压缩至原大小的30%-70%)。Apache的mod_expires模块配置Expires头,如ExpiresActive On、ExpiresByType image/jpeg "access plus 1 year"),减少重复请求;对频繁访问的动态数据(如商品分类、用户信息)使用Redis或Memcached缓存,降低数据库查询压力。Ajax技术异步加载非核心数据(如评论、推荐商品),避免阻塞页面初始渲染;对于耗时操作(如报表生成),采用消息队列(如RabbitMQ)异步执行,提升页面响应速度。数据库优化
EXPLAIN分析慢查询,添加合适的索引(如对WHERE、JOIN条件中的字段建索引);避免SELECT *(只查询所需字段),使用分页(LIMIT)减少单次查询返回的数据量;对频繁更新的表避免过度索引(索引会增加写入开销)。Tomcat的JDBC连接池(如DBCP2、HikariCP),复用数据库连接,减少连接创建和销毁的开销。例如在context.xml中配置HikariCP:<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
maxTotal="20" maxIdle="10" minIdle="5" idleTimeout="30000"
connectionTimeout="3000" validationQuery="SELECT 1"/>
```。
静态资源与基础设施优化
CDN(内容分发网络),利用其全球节点将资源分发至离用户最近的节点,减少网络传输延迟,提升加载速度。Nginx作为反向代理(在Tomcat前部署Nginx),处理静态资源请求(如location ~* \.(jpg|css|js)$ { root /var/www/static; }),减轻Tomcat的压力;调整Tomcat的server.xml配置(如增大maxThreads(默认200,可根据CPU核心数调整至500-800)、minSpareThreads(默认10,调整为50)),提升并发处理能力。CPU核心数(如从4核升级至8核)、扩大内存(如从8GB升级至16GB及以上)、使用SSD替代机械硬盘(提升磁盘I/O速度),从根本上提升系统处理能力。性能监控与分析
top(查看CPU、内存占用)、htop(更直观的资源监控)、vmstat(查看磁盘I/O、上下文切换)、netstat(查看网络连接状态)等工具,定期检查服务器资源使用情况,定位瓶颈(如CPU过高可能是SQL查询慢,内存不足可能是缓存过大)。JProfiler、VisualVM等工具对JSP应用进行性能剖析,找出耗时较长的方法(如某个SQL查询、循环计算),针对性优化(如优化SQL索引、重构代码逻辑)。