一、调整操作系统级资源限制(关键基础)
修改用户进程及文件句柄限制
编辑/etc/security/limits.conf
文件,为WebLogic运行用户(如weblogic
)添加以下配置,限制进程数(nproc
)和打开文件数(nofile
):
weblogic soft nproc 2048 # 软限制:单用户最多可创建的进程数
weblogic hard nproc 4096 # 硬限制:系统允许的单用户最大进程数
weblogic soft nofile 65536 # 软限制:单用户最多可打开的文件描述符数
weblogic hard nofile 65536 # 硬限制:系统允许的单用户最大文件描述符数
若系统使用90-nproc.conf
(如CentOS 7+),需修改该文件中的soft nproc
值(如从1024调整为2048),避免默认限制过低。
提升系统级文件句柄上限
临时调整:通过sysctl -w fs.file-max=2097152
命令立即生效(仅当前会话有效);
永久调整:编辑/etc/sysctl.conf
文件,添加fs.file-max = 2097152
,然后执行sysctl -p
使配置生效。
调整线程栈大小(可选)
若应用存在线程栈溢出问题,可通过ulimit -s
命令调整线程栈大小(单位:KB),如ulimit -s 8192
(设置为8MB),或修改/etc/security/limits.conf
添加weblogic soft stack 8192
。
二、配置WebLogic JVM内存参数(核心资源)
$DOMAIN_HOME/bin/setDomainEnv.sh
文件,设置MEM_ARGS
环境变量,调整JVM堆内存及元空间(Java 8+):export MEM_ARGS="-Xms2048m -Xmx4096m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m"
-Xms
:初始堆内存(建议为物理内存的10%-20%,不超过2GB);-Xmx
:最大堆内存(建议为物理内存的50%-70%,不超过物理内存的80%);-XX:MetaspaceSize
/-XX:MaxMetaspaceSize
:元空间初始/最大大小(Java 8+替代永久代,避免OutOfMemoryError: PermGen space
)。三、优化WebLogic线程池配置(提升并发能力)
通过管理控制台配置
登录WebLogic管理控制台,导航至“环境”→“服务器”→选择目标服务器→“配置”→“线程池”,调整以下参数:
通过配置文件配置
编辑$DOMAIN_HOME/config/config.xml
文件,在<server>
标签内添加或修改线程池参数:
<server name="AdminServer">
<thread-pool-params>
<min-threads-constraint>
<name>MinThreadPool</name>
<min-threads>100</min-threads>
</min-threads-constraint>
<max-threads-constraint>
<name>MaxThreadPool</name>
<max-threads>200</max-threads>
</max-threads-constraint>
</thread-pool-params>
</server>
修改后需重启WebLogic服务器使配置生效。
四、调整数据库连接池参数(减少资源占用)
五、监控与验证
top
(查看CPU/内存使用率)、ulimit -a
(查看当前用户资源限制)、lsof -p <PID>
(查看进程打开文件数)、jstat -gc <PID>
(查看JVM垃圾回收情况)等命令监控资源使用情况。ps -ef | grep weblogic
查看进程资源限制,或通过管理控制台查看线程池、连接池的实际配置是否生效。