如何精准高效地分配Ubuntu WebLogic资源,实现应用性能的全面提升?
- 内容介绍
- 文章标签
- 相关推荐
使用者常见痛点
在 Ubuntu 上部署 WebLogic 时很多公司会遇到以下困扰:
- CPU、内存、磁盘 I/O 资源争用导致响应慢、吞吐量下降。说起来,
- JVM 堆/非堆内存设置不合理。出现 OutOfMemory 或频繁 GC。怎么说呢,
- 日志文件权限混乱。安全审计受阻,且日志滚动不及时占满磁盘。
- 数据库连接池配置错误,出现连接泄漏或连接数不足。
- 程序文件描述符上限过低,导致高并发时服务异常。
一、整体资源规划与监控
在正式调优之前,需要先对服务器的 CPU、内存、磁盘还有网络进行基线监控。推荐使用 htopiostatnetstat 还有 Promeus + Grafana 组合实时采集指标。
1. 设置程序级资源限制
# 提高文件描述符上限
echo "* soft nofile 65535">> /etc/security/limits.conf
echo "* hard nofile 65535">> /etc/security/limits.conf
# 通过 ulimit 生效
ulimit -n 65535
2. 使用 cgroup 对 WebLogic 做内存隔离
# 创建内存限制组
sudo cgcreate -g memory:/weblogic_limit
# 设置内存上限为 4GB
echo 4G | sudo tee /sys/fs/cgroup/memory/weblogic_limit/memory.limit_in_bytes
# 将 WebLogic 主进程加入该组
sudo cgclassify -g memory:weblogic_limit
二、WebLogic 使用者与目录安全化
建议使用专用使用者运行 WebLogic,避免以 root 启动带来的安全风险。
# 创建专用使用者组和使用者
groupadd weblogic
useradd -g weblogic -m -s /bin/bash weblogic
# 授权安装目录
chown -R weblogic:weblogic /opt/weblogic
chmod -R 750 /opt/weblogic
日志目录权限设置
# 限制日志只能被 weblogic 使用者和管理员读取
chmod 640 /opt/weblogic/logs/*.log
chown weblogic:weblogic /opt/weblogic/logs/*.log
三、JVM 内存与线程池精细调优
1. 堆内存统一配置
# 在 setDomainEnv.sh 中添加:
JA_OPTIONS="-Xms4g -Xmx4g -XX:+UseG1GC"
export JA_OPTIONS
# 注意:堆总量不超过物理内存的 70%,为 OS 与其他进程预留空间。
2. 非堆内存与 GC 参数调整
# 示例
JA_OPTIONS="${JA_OPTIONS} -XX:MaxMetaspaceSize=512m -XX:+PrintGCDetails -Xlog:gc*:file=/opt/weblogic/logs/gc.log:time"
export JA_OPTIONS
3.
WebLogic 默认的 ExecuteThread 数量往往无法利用多核 CPU。可在管理控制台或 domain.xml 中修改:
default
${CPU_CORES * 4}
300
四、日志管理与自动轮转
1. 使用 logrotate 集中管理 WebLogic 日志
Create a dedicated configuration file:
# /etc/logrotate.d/weblogic
/opt/weblogic/logs/*.log {
daily
rotate 7 # 保留最近7天日志
compress # 压缩旧日志
missingok # 文件不存在不报错
notifempty # 空文件不轮转
create 0640 weblogic weblogic
copytruncate # 在写入期间不中断服务
}
2. 权限统一审计脚本
# 检查并修复日志权限
find /opt/weblogic/logs -type f!-perm 0640 -exec chmod 640 {} \;
find /opt/weblogic/logs -type f!其实,-user weblogic -exec chown weblogic:weblogic {} \;
五、数据库连接池常用方法
在 domain.xml 中配置合适的 JD娱乐 数据源属性:
MyDS
jdbc:oracle:thin:@//dbhost:1521/orcl
oracle.jdbc.driver.OracleDriver
10
100
300
true
Pain point:如果 MaxCapacity 设置过大,会抢占程序文件描述符;若太小则出现 “Connection pool exhausted” 错误。建议结合业务峰值进行容量预估,并开启连接泄漏检测:
-Dweblogic.jdbc.leakDetectionEnabled=true
- Dweblogic.jdbc.leakDetectionThreshold=300000 # 单位毫秒
六、图形化快速部署教程
1. 使用 Config Wizard 创建域和服务器实例
在 $MW_HOME/wlserver/common/bin 下执行:
$ ./config.sh # 按向导填写域名、管理员账号、监听地址与端口等信息
{完成向导后在 $DOMAIN_HOME 下开启服务器:}
$ ./startWebLogic.sh # 自动加载前面配置好的 JVM 参数和资源策略
2. 启用 JMX 并接入监控网站
# 在 setDomainEnv.sh 中加入: JA_OPTIONS="${JA_OPTIONS} -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9010 \ -Dcom.sun.management.jmxremote.aunticate=false \ -Dcom.sun.management.jmxremote.ssl=false" export JA_OPTIONS # 推荐使用 jconsole 或者 Promeus JMX Exporter 抓取指标。不过,
精准高效分配 Ubuntu 上的 WebLogic 资源关键点
- 先规划后调优:AIOps‑style 基线监控帮助定位瓶颈。
- Cgroup + ulimit:Ensure WebLogic 不会抢占全局资源。
- Memory/CPU 参数统一:-Xms = -Xmx 并控制在物理内存的70%以内;线程池按核数×4 调整,
- Logrotate + 权限审计:- 避免磁盘被日志撑爆;- 确保只有授权使用者可读写。
- DB‑pool 与文件描述符同步调节:- 防止连接泄漏与 “Too many open files”。
- Monitor via JMX + Grafana:- 实时预警,可快速定位异常。
- Secure run‑as user:- 最小特权原则提高安全性。
通过以上步骤,你可以实现对 Ubuntu 上 WebLogic 的精准、高效资源分配。从根本上提高应用响应速度、吞吐量还有程序稳定性,让“卡顿”“崩溃”等痛点彻底消失。
使用者常见痛点
在 Ubuntu 上部署 WebLogic 时很多公司会遇到以下困扰:
- CPU、内存、磁盘 I/O 资源争用导致响应慢、吞吐量下降。说起来,
- JVM 堆/非堆内存设置不合理。出现 OutOfMemory 或频繁 GC。怎么说呢,
- 日志文件权限混乱。安全审计受阻,且日志滚动不及时占满磁盘。
- 数据库连接池配置错误,出现连接泄漏或连接数不足。
- 程序文件描述符上限过低,导致高并发时服务异常。
一、整体资源规划与监控
在正式调优之前,需要先对服务器的 CPU、内存、磁盘还有网络进行基线监控。推荐使用 htopiostatnetstat 还有 Promeus + Grafana 组合实时采集指标。
1. 设置程序级资源限制
# 提高文件描述符上限
echo "* soft nofile 65535">> /etc/security/limits.conf
echo "* hard nofile 65535">> /etc/security/limits.conf
# 通过 ulimit 生效
ulimit -n 65535
2. 使用 cgroup 对 WebLogic 做内存隔离
# 创建内存限制组
sudo cgcreate -g memory:/weblogic_limit
# 设置内存上限为 4GB
echo 4G | sudo tee /sys/fs/cgroup/memory/weblogic_limit/memory.limit_in_bytes
# 将 WebLogic 主进程加入该组
sudo cgclassify -g memory:weblogic_limit
二、WebLogic 使用者与目录安全化
建议使用专用使用者运行 WebLogic,避免以 root 启动带来的安全风险。
# 创建专用使用者组和使用者
groupadd weblogic
useradd -g weblogic -m -s /bin/bash weblogic
# 授权安装目录
chown -R weblogic:weblogic /opt/weblogic
chmod -R 750 /opt/weblogic
日志目录权限设置
# 限制日志只能被 weblogic 使用者和管理员读取
chmod 640 /opt/weblogic/logs/*.log
chown weblogic:weblogic /opt/weblogic/logs/*.log
三、JVM 内存与线程池精细调优
1. 堆内存统一配置
# 在 setDomainEnv.sh 中添加:
JA_OPTIONS="-Xms4g -Xmx4g -XX:+UseG1GC"
export JA_OPTIONS
# 注意:堆总量不超过物理内存的 70%,为 OS 与其他进程预留空间。
2. 非堆内存与 GC 参数调整
# 示例
JA_OPTIONS="${JA_OPTIONS} -XX:MaxMetaspaceSize=512m -XX:+PrintGCDetails -Xlog:gc*:file=/opt/weblogic/logs/gc.log:time"
export JA_OPTIONS
3.
WebLogic 默认的 ExecuteThread 数量往往无法利用多核 CPU。可在管理控制台或 domain.xml 中修改:
default
${CPU_CORES * 4}
300
四、日志管理与自动轮转
1. 使用 logrotate 集中管理 WebLogic 日志
Create a dedicated configuration file:
# /etc/logrotate.d/weblogic
/opt/weblogic/logs/*.log {
daily
rotate 7 # 保留最近7天日志
compress # 压缩旧日志
missingok # 文件不存在不报错
notifempty # 空文件不轮转
create 0640 weblogic weblogic
copytruncate # 在写入期间不中断服务
}
2. 权限统一审计脚本
# 检查并修复日志权限
find /opt/weblogic/logs -type f!-perm 0640 -exec chmod 640 {} \;
find /opt/weblogic/logs -type f!其实,-user weblogic -exec chown weblogic:weblogic {} \;
五、数据库连接池常用方法
在 domain.xml 中配置合适的 JD娱乐 数据源属性:
MyDS
jdbc:oracle:thin:@//dbhost:1521/orcl
oracle.jdbc.driver.OracleDriver
10
100
300
true
Pain point:如果 MaxCapacity 设置过大,会抢占程序文件描述符;若太小则出现 “Connection pool exhausted” 错误。建议结合业务峰值进行容量预估,并开启连接泄漏检测:
-Dweblogic.jdbc.leakDetectionEnabled=true
- Dweblogic.jdbc.leakDetectionThreshold=300000 # 单位毫秒
六、图形化快速部署教程
1. 使用 Config Wizard 创建域和服务器实例
在 $MW_HOME/wlserver/common/bin 下执行:
$ ./config.sh # 按向导填写域名、管理员账号、监听地址与端口等信息
{完成向导后在 $DOMAIN_HOME 下开启服务器:}
$ ./startWebLogic.sh # 自动加载前面配置好的 JVM 参数和资源策略
2. 启用 JMX 并接入监控网站
# 在 setDomainEnv.sh 中加入: JA_OPTIONS="${JA_OPTIONS} -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9010 \ -Dcom.sun.management.jmxremote.aunticate=false \ -Dcom.sun.management.jmxremote.ssl=false" export JA_OPTIONS # 推荐使用 jconsole 或者 Promeus JMX Exporter 抓取指标。不过,
精准高效分配 Ubuntu 上的 WebLogic 资源关键点
- 先规划后调优:AIOps‑style 基线监控帮助定位瓶颈。
- Cgroup + ulimit:Ensure WebLogic 不会抢占全局资源。
- Memory/CPU 参数统一:-Xms = -Xmx 并控制在物理内存的70%以内;线程池按核数×4 调整,
- Logrotate + 权限审计:- 避免磁盘被日志撑爆;- 确保只有授权使用者可读写。
- DB‑pool 与文件描述符同步调节:- 防止连接泄漏与 “Too many open files”。
- Monitor via JMX + Grafana:- 实时预警,可快速定位异常。
- Secure run‑as user:- 最小特权原则提高安全性。
通过以上步骤,你可以实现对 Ubuntu 上 WebLogic 的精准、高效资源分配。从根本上提高应用响应速度、吞吐量还有程序稳定性,让“卡顿”“崩溃”等痛点彻底消失。

