温馨提示×

centos跑weblogic卡怎么办

小樊
46
2026-09-03 08:14:54
栏目: 智能运维

在 CentOS 上运行 WebLogic 出现“卡顿”,通常不是单一原因,而是系统资源、JVM配置、WebLogic参数、或代码问题叠加。下面按排查顺序 + 优化方案给你一个实用清单。


一、先确认“卡在哪里”

在服务器上执行:

top

看:

  • CPU 是否 100%
  • 内存是否快满
  • 是否有 swap 频繁使用
free -h
vmstat 1

si/so(swap)是否不为 0

iostat -x 1

看磁盘 IO 是否瓶颈


二、最常见原因 & 解决办法

1️⃣ JVM 内存配置不合理(最常见)

WebLogic 默认堆内存往往太小。

修改:

$DOMAIN_HOME/bin/setDomainEnv.sh

示例(8G内存机器):

USER_MEM_ARGS="-Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"
export USER_MEM_ARGS

✅ 建议:

  • Xms = Xmx(避免动态扩容卡顿)
  • 留出至少 2G 给系统和 OS 缓存

2️⃣ GC 导致“假死”

看 GC 日志:

jstat -gcutil <pid> 1000

如果:

  • FGCT 很大
  • O(老年代)长期 90%+

说明 Full GC 频繁

✅ 解决:

  • 使用 G1 GC(JDK8+):
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200

3️⃣ Swap 导致严重卡顿(CentOS 常见坑)

如果内存不够,系统用 swap,WebLogic 直接“假死”。

cat /proc/sys/vm/swappiness

建议:

sysctl vm.swappiness=10

或临时:

echo 10 > /proc/sys/vm/swappiness

4️⃣ 线程池 / 连接池配置不合理

WebLogic 控制台:

  • Servers → 线程池
    • 初始线程数太小
  • JDBC 数据源
    • 最大连接数太小

✅ 常见建议:

  • 线程池:50~200(看CPU核数)
  • 数据库连接池:
Initial Capacity: 10
Max Capacity: 50~100

5️⃣ 磁盘 IO 慢(云服务器常见)

WebLogic 日志、domain 在慢盘上会非常卡。

✅ 建议:

  • domain 放在 SSD
  • 关掉不必要日志:
<log>
  <file-name>logs/server.log</file-name>
  <rotation-type>bySize</rotation-type>
</log>

6️⃣ CentOS 系统级优化

ulimit -n

WebLogic 建议:

* soft nofile 65535
* hard nofile 65535

三、快速“急救”方案

如果现在就卡:

  1. 重启 WebLogic
  2. 调大内存
  3. 关掉无关应用
  4. server.log 有没有死锁 / OOM

四、你可以补充这些信息,我可以更精准帮你

  1. CentOS 版本
  2. JDK 版本
  3. WebLogic 版本
  4. 内存大小
  5. 是启动卡、访问卡、还是部署卡?

我可以直接给你一套可用的参数模板

0