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等参数)。