Ubuntu上WebLogic性能调优技巧
vm.swappiness
(如sudo sysctl -w vm.swappiness=10
)降低系统对交换分区的依赖,减少内存页交换带来的性能损耗;优化网络栈参数(如net.core.somaxconn
提升连接队列长度、net.ipv4.tcp_tw_reuse
复用TIME-WAIT连接),增强网络吞吐能力。noatime
(禁用访问时间更新)、nodiratime
(禁用目录访问时间更新)选项,减少文件系统元数据操作的开销。ulimit -u
查看当前用户最大线程数(默认通常为1024),将其调整为更高值(如5000),并修改/etc/security/limits.d/90-nproc.conf
(将soft nproc 1024
改为更大值)实现永久生效,避免因线程数限制导致无法处理高并发请求。-Xms
)与最大堆(-Xmx
)设置为相同值(如-Xms2048m -Xmx2048m
),避免堆内存动态扩展带来的性能波动;对于内存需求大的应用,可适当增大堆内存,但需避免超过物理内存的70%(防止触发OOM Killer)。-XX:+UseG1GC
参数),其针对大内存应用设计,能减少Full GC停顿时间;若应用对延迟敏感,可调整G1的暂停时间目标(如-XX:MaxGCPauseMillis=200
,单位毫秒)。2048MB / 2MB = 1024
);2. 修改/etc/default/grub
添加GRUB_CMDLINE_LINUX="default_hugepagesz=2M hugepagesz=2M hugepages=1024"
;3. 更新GRUB并重启系统;4. 在WebLogic启动脚本中添加-XX:+UseLargePages -XX:LargePageSizeInBytes=2m
参数。setDomainEnv.sh
或config.xml
)调整线程池大小。示例:在setDomainEnv.sh
中添加-Dweblogic.threadpool.MinPoolSize=200 -Dweblogic.threadpool.MaxPoolSize=2000
,或在config.xml
中配置<self-tuning-thread-pool-size-min>200</self-tuning-thread-pool-size-min>
和<self-tuning-thread-pool-size-max>2000</self-tuning-thread-pool-size-max>
;线程数设置需参考CPU核心数(一般每核心25-50个线程),避免过多线程导致上下文切换开销。MinPoolSize
和MaxPoolSize
,系统会根据负载动态调整线程数量,适合波动较大的负载场景。Initial Capacity
)设置为应用启动时的最小连接数(如10),最大容量(Max Capacity
)设置为应用峰值时的最大连接数(如200),容量增长(Capacity Increment
)设置为每次增加的连接数(如10);避免设置过大的最大容量(防止连接泄漏导致数据库资源耗尽)。Connection Timeout
,如30秒)、非活动连接超时(Inactive Connection Timeout
,如60秒)、重试次数(Retry Count
,如3次),及时回收闲置连接,减少数据库压力。net.core.rmem_max
(接收缓冲区最大值,如26214400字节)和net.core.wmem_max
(发送缓冲区最大值,如26214400字节),提升网络传输效率;使用ss
或netstat
命令监控网络连接状态,排查连接泄漏或拥塞问题。noop
或deadline
调度器(noop
无队列管理,适合SSD的高速随机读写;deadline
保证低延迟),机械磁盘使用cfq
调度器(公平队列,适合顺序读写);修改路径:/sys/block/sda/queue/scheduler
(将[cfq]
改为noop
或deadline
)。-Dcom.sun.management.jmxremote
等参数)。