1. 监控系统资源使用情况
首先通过工具定位资源占用高的根源。使用top命令实时查看CPU、内存占用率(按M键按内存排序,P键按CPU排序),识别占用高的进程;vmstat 1 5监控系统整体状态(重点关注r列——运行队列长度、b列——阻塞进程数、free列——空闲内存、si/so列——磁盘交换情况);iostat -x 1分析磁盘I/O(关注%util——磁盘利用率、await——平均等待时间,若%util接近100%说明磁盘瓶颈);netstat -antp查看网络连接状态(统计ESTABLISHED连接数,判断是否因连接数过多导致资源占用高)。
2. 优化操作系统配置
调整内核参数提升系统资源利用率。编辑/etc/sysctl.conf文件,添加以下关键参数:
net.ipv4.tcp_tw_reuse = 1(允许重用TIME_WAIT状态的连接,减少TCP连接开销);net.ipv4.tcp_fin_timeout = 30(缩短TIME_WAIT状态的超时时间,默认60秒);vm.swappiness = 10(降低交换空间使用倾向,避免内存不足时频繁换页);net.core.somaxconn = 8192(增加TCP连接队列长度,避免连接被拒绝)。sysctl -p使配置生效。同时,调整文件描述符限制(避免并发连接过多导致无法创建新连接),编辑/etc/security/limits.conf添加:* soft nofile 65535(普通用户最大打开文件数软限制)、* hard nofile 65535(硬限制);编辑/etc/pam.d/login添加session required pam_limits.so,使限制生效。3. 调整WebLogic配置
通过调整JVM内存分配和垃圾回收策略减少内存占用。编辑setDomainEnv.sh文件(位于DOMAIN_HOME/bin目录),修改JAVA_OPTIONS参数:
-Xms)和最大堆内存(-Xmx)为相同值(如-Xms4g -Xmx4g),避免堆内存动态扩展带来的性能损耗;-XX:PermSize=256m -XX:MaxPermSize=512m,Java 8以后用-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m);-XX:+UseG1GC),适合大内存应用,能有效减少Full GC时间。export JAVA_OPTIONS="-Xms4g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"。http://ip:7001/console),导航至“环境→服务器→服务器名称→配置→线程池”,调整“最大线程数”(默认10个,可根据CPU核心数调整,如8核服务器设置为2*CPU核心数+1=17)和“最小线程数”(设置为最大线程数的1/4~1/2,如8个),避免线程数过少导致请求排队或过多导致CPU竞争。10)、“最大容量”(如100,根据数据库承受能力设置)、“容量增量”(如5,避免频繁创建连接),并设置“连接超时时间”(如30s,及时释放闲置连接)。4. 排查内存泄漏
若存在java.lang.OutOfMemoryError错误,需通过以下步骤排查:
JAVA_OPTIONS中添加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof,当内存溢出时自动生成堆转储文件;或使用jmap命令手动生成(jmap -dump:live,format=b,file=dump.hprof <pid>,<pid>为WebLogic进程ID)。dump.hprof,查看“支配树”“泄漏嫌疑”等报告,找出占用内存最多的对象(如缓存未清理、静态集合类无限增长)。5. 优化应用程序性能
SELECT *)、使用连接池复用数据库连接、引入缓存(如Redis)缓存热点数据(如商品信息、用户会话),减少对数据库的直接访问。StringBuilder代替+)、减少不必要的对象克隆、使用对象池复用昂贵的对象(如数据库连接、线程)。DEBUG调整为INFO或WARN,避免过多的日志输出占用磁盘I/O和CPU资源(如log4j.logger.com.example=INFO)。6. 硬件升级
若以上优化仍无法满足需求,考虑升级硬件: