在Debian系统上设置WebLogic Server的资源限制,需结合操作系统级配置(针对WebLogic进程)和WebLogic自身配置(针对应用/线程池等),以下是具体步骤:
操作系统级的资源限制直接影响WebLogic进程的内存、文件描述符、线程等使用,需通过以下方式配置:
使用ulimit
命令快速调整当前shell会话的资源限制,适用于测试环境:
# 查看当前所有资源限制
ulimit -a
# 设置最大打开文件描述符数量(软限制4096,硬限制8192)
ulimit -n 4096
# 设置最大用户进程数(软限制1024,硬限制2048)
ulimit -u 1024
# 设置内存使用上限(单位:KB,此处设置为无限制)
ulimit -m unlimited
注:临时设置仅在当前终端有效,关闭后失效。
需修改系统配置文件,使限制对所有用户(包括WebLogic启动用户)持久生效:
/etc/security/limits.conf
编辑该文件,添加针对WebLogic用户的限制(以weblogic
用户为例):
sudo nano /etc/security/limits.conf
添加以下内容(soft
为软限制,hard
为硬限制):
weblogic soft nofile 4096
weblogic hard nofile 8192
weblogic soft nproc 1024
weblogic hard nproc 2048
注:
nofile
表示最大打开文件数,nproc
表示最大进程数,可根据实际需求调整。
pam_limits.so
确保PAM模块在用户登录时应用限制,编辑以下文件:
sudo nano /etc/pam.d/common-session
sudo nano /etc/pam.d/common-session-noninteractive
在文件末尾添加:
session required pam_limits.so
保存后,重新登录用户或重启系统使配置生效。
若WebLogic通过systemd服务(如weblogic.service
)启动,需修改systemd的全局配置:
sudo nano /etc/systemd/system.conf
sudo nano /etc/systemd/user.conf
添加以下内容(针对所有用户或特定用户):
DefaultLimitNOFILE=4096
DefaultLimitNPROC=1024
保存后,重新加载systemd配置:
sudo systemctl daemon-reload
重启WebLogic服务使限制生效。
若需提高系统整体的文件描述符上限,编辑/etc/sysctl.conf
:
sudo nano /etc/sysctl.conf
添加以下内容:
fs.file-max = 100000
应用更改:
sudo sysctl -p
注:此设置影响系统所有进程,需根据服务器资源调整。
操作系统级设置仅为WebLogic提供了基础资源边界,还需通过WebLogic配置调整应用层资源(如JVM内存、线程池、连接池等):
通过修改WebLogic Domain的启动脚本或配置文件,设置JVM的初始堆内存(-Xms
)和最大堆内存(-Xmx
):
编辑WebLogic Domain的bin/startWebLogic.sh
(Debian下路径通常为/home/weblogic/user_projects/domains/base_domain/bin/startWebLogic.sh
),在脚本开头添加:
export JAVA_OPTIONS="${JAVA_OPTIONS} -Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
注:
-Xms
为初始堆内存(如2GB),-Xmx
为最大堆内存(如4GB),-XX:+UseG1GC
启用G1垃圾回收器(适用于高并发场景)。
config.xml
(可选)若需通过WebLogic Console管理,可直接编辑Domain的config/config.xml
文件,找到对应Server节点,添加JVM参数:
<server>
<name>AdminServer</name>
<JVM>
<options>
<option>-Xms2g</option>
<option>-Xmx4g</option>
</options>
</JVM>
</server>
修改后需重启WebLogic生效。
调整线程池大小以处理并发请求,避免线程阻塞:
http://<host>:7001/console
);Environment → Servers → <Your Server> → Configuration → Thread Pools
;weblogic.kernel.Default
),修改Maximum Thread Count
(如200)和Minimum Thread Count
(如10);Save
并重启服务器。编辑setDomainEnv.sh
(路径同startWebLogic.sh
),添加JVM参数:
export JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinThreads=10 -Dweblogic.threadpool.MaxThreads=200 -Dweblogic.threadpool.QueueCapacity=100"
注:
MinThreads
为最小线程数,MaxThreads
为最大线程数,QueueCapacity
为队列容量(超出队列的请求将被拒绝)。
优化连接池以减少数据库访问瓶颈:
Services → Data Sources → <Your DataSource> → Configuration → Connection Pool
;Initial Capacity
(初始连接数,如10)、Max Capacity
(最大连接数,如50)、Statement Cache Size
(语句缓存,如100);Save
并重启服务器。编辑setDomainEnv.sh
,添加JVM参数:
export JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.jdbc.initialCapacity=10 -Dweblogic.jdbc.maxCapacity=50 -Dweblogic.jdbc.statementCacheSize=100"
ulimit -a
命令查看当前用户的资源限制,确认nofile
、nproc
等参数已更新;Monitoring → Servers → <Your Server> → Performance
页面,查看JVM堆内存使用情况;以上设置需根据WebLogic应用的实际情况(如并发量、应用内存占用)进行调整,建议在测试环境验证后再应用于生产环境。