CentOS下WebLogic性能调优技巧
合理分配JVM内存是提升WebLogic性能的核心。需调整-Xms(初始堆大小)和-Xmx(最大堆大小)参数,建议将两者设置为相同值(如4096m),避免内存频繁申请/释放的开销;对于Java 7及以前版本,还需设置-XX:PermSize(永久代初始大小)和-XX:MaxPermSize(永久代最大大小,如512m),Java 8及以上版本则使用元空间(无需手动设置)。同时,通过vm.swappiness参数(建议设为10)减少系统对Swap空间的依赖,降低I/O瓶颈。
线程池大小直接影响WebLogic处理并发请求的能力。默认线程数(如weblogic.kernel.Default队列的15个)通常不足,需根据CPU核心数调整:推荐设置为CPU核心数×50(如8核服务器可设为400)。可通过两种方式修改:一是通过控制台进入“配置→优化→线程池”,调整MinPoolSize(最小线程数,如500)和MaxPoolSize(最大线程数,如3000);二是修改setDomainEnv.sh文件,添加-Dweblogic.threadpool.MinPoolSize=500和-Dweblogic.threadpool.MaxPoolSize=3000参数,重启后生效。
针对CentOS系统,需调整内核参数以支持高并发:
/etc/security/limits.conf文件,添加* soft nofile 65535和* hard nofile 65535,提升单个进程可打开的最大文件数;/etc/sysctl.conf文件,设置net.ipv4.tcp_tw_reuse=1(重用TIME_WAIT连接)、net.ipv4.tcp_fin_timeout=30(缩短TIME_WAIT超时时间)、net.core.rmem_max=16777216和net.core.wmem_max=16777216(增加TCP接收/发送缓冲区大小),执行sysctl -p使配置生效。数据库连接池的合理配置可避免连接泄漏和资源浪费。需调整以下参数:
InitialCapacity=50,MaxCapacity=50),避免启动后动态创建连接的开销;InactiveConnectionTimeout=300(非活动连接超时时间,单位:秒)、TestConnectionsOnReserve=true(从池中获取连接时测试有效性),通过控制台“服务→数据源→高级”修改并保存。启用本地IO性能包可提升套接字处理效率。通过WebLogic控制台进入“配置→优化”,勾选“Enable Native IO”选项(默认未选中),重启服务器后生效。该设置让本地Socket读写使用独立执行队列,减少默认队列线程的占用,提高IO密集型应用的性能。
调整TCP连接缓存数(Accept Backlog)可避免因连接队列满导致的“拒绝连接”错误。默认值为50,需根据并发量增加:通过控制台进入“配置→调优”,修改Accept Backlog参数(如设置为200),重启服务器生效。若仍出现连接拒绝,可逐步增加该值的25%,直至问题解决。
减少不必要的日志输出可降低IO开销。关闭Log4j或减少System.out.println语句的使用;调整日志级别(如将DEBUG改为INFO),避免过多详细日志;通过WebLogic控制台“监视→性能”标签实时监控内存使用率、线程池队列长度、JDBC连接池状态等指标,及时发现性能瓶颈。
优化部署的应用可减少WebLogic的负载:
Servlet重新加载检查时间(如设为0,禁用自动检查)、JSP页检查时间(如设为60秒),减少不必要的编译开销;