在 Debian 上运行 WebLogic Server(WLS) 的调优,通常可以从 操作系统层、JVM 层、WebLogic 自身配置、应用层 四个维度来做。下面按实战角度说明。
WebLogic 连接多,容易报 too many open files
# 查看
ulimit -n
# 临时
ulimit -n 65536
# 永久(/etc/security/limits.conf)
weblogic soft nofile 65536
weblogic hard nofile 65536
确保 PAM 启用:
# /etc/pam.d/common-session
session required pam_limits.so
编辑 /etc/sysctl.conf:
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
sysctl -p
swapoff -a
(生产环境视情况)
修改:
$DOMAIN_HOME/bin/setDomainEnv.sh
示例(8G 内存):
USER_MEM_ARGS="-Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"
export USER_MEM_ARGS
GC 推荐:
-XX:+UseG1GC -XX:MaxGCPauseMillis=200
-XX:+UseG1GC
-XX:+PrintGCDetails -Xloggc:/logs/weblogic/gc.log
WebLogic 默认使用 自调节线程池,一般无需手动改,但可限制:
Administration Console
→ Servers → your_server → Tuning
建议:
Services → JDBC → Data Sources → Connection Pool
配置建议:
确保:
Servers → your_server → Configuration → General
→ Enable Native IO = true
<session-config>
<session-timeout>30</session-timeout>
</session-config>
# 创建域时选择 Production Mode
在 web.xml 或反向代理(Nginx)中开启。
jstack <pid> > thread.txt
jmap -dump:live,format=b,file=heap.hprof <pid>
使用 MAT 分析。
查看:
Console → JDBC → Monitoring → Active Connections
8C16G Debian + WebLogic 12c + JDK8
-Xms8g -Xmx8g
-XX:+UseG1GC
nofile=65536
Max Capacity=80
Accept Backlog=2000
如果你能提供:
我可以给你一份 定制化调优方案。