Weblogic Server Java.io.IOException: Posted Content Exceeds Max Post Size weblogic应用超过1G解决办法

该文章已生成可运行项目,

1报错现象

发布大于1GBwar包报错: java.io.IOException: Posted content exceeds max post size

1.1报错截图:

1.2报错日志:

<Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
weblogic.management.DeploymentException: Exception occured while downloading files
at weblogic.deploy.internal.targetserver.datamanagement.AppDataUpdate.doDownload(AppDataUpdate.java:49)
at weblogic.deploy.internal.targetserver.datamanagement.DataUpdate.download(DataUpdate.java:57)
at weblogic.deploy.internal.targetserver.datamanagement.Data.prepareDataUpdate(Data.java:117)
at weblogic.deploy.internal.targetserver.BasicDeployment.prepareDataUpdate(BasicDeployment.java:750)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepareDataUpdate(AbstractOperation.java:918)
Truncated. see log file for complete stacktrace
Caused By: java.io.IOException: Posted content exceeds max post size
at weblogic.deploy.service.datatransferhandlers.MultipartParser.parseResponse(MultipartParser.java:102)
at weblogic.deploy.service.datatransferhandlers.MultipartParser.<init>(MultipartParser.java:84)
at weblogic.deploy.service.datatransferhandlers.MultipartParser.<init>(MultipartParser.java:47)
at weblogic.deploy.service.datatransferhandlers.HttpDataTransferHandler.getDataAsStream(HttpDataTransferHandler.java:89)
at weblogic.deploy.service.datatransferhandlers.DataHandlerManager$RemoteDataTransferHandler.getDataAsStream(DataHandlerManager.java:153)
Truncated. see log file for complete stacktrace

 2原因:

最大应用程序大小在WLS中进行了硬编码,因此无法将1.1 GB EAR应用程序部署到WebLogic,Bug号18633088,新版本已消除了此限制。

3解决办法

3.1对于WebLogic 版本10.3.6 ~ 12.1.3

  1. Apply Patch 18633088
  2. 添加 Java option: -Dweblogic.deploy.MaxPostSize 到Weblogic启动脚本里, 例如:
    -Dweblogic.deploy.MaxPostSize="1610612736"

该参数表示允许的最大PostSize为1610612736 byte,注意最大值不能超过2GB。

Note: Maximum allowed value must be under 2GB, ie: “2147483647” or
less.

3.2对于WebLogic版本12.2.x

 只需要执行上面的第二步即可。

本文章已经生成可运行项目
<think>嗯,用户遇到了WebLogic中由于fcntl()导致的java.io.IOException文件锁定问题,错误是Resource temporarily unavailable,errno 11。我需要帮他找到解决办法。首先,我应该回忆一下WebLogic的文件锁定机制。WebLogic使用文件锁来确保单例服务或部署的独占访问,当多个实例尝试访问同一文件时可能会出问题。 可能的解决方案有几个方向。首先,检查是否有重复的进程在运行,用户可能意外启动了多个实例,导致锁冲突。可以用ps命令检查并终止旧的进程。其次,临时文件或事务日志(如DefaultStore)可能被残留,需要清理。删除tmp目录下的相关文件,特别是DefaultStore目录,但要注意备份。 另外,文件描述符限制可能太低,导致无法获取足够的锁。可以检查ulimit -n的结果,增加系统或WebLogic用户的文件描述符限制,比如在/etc/security/limits.conf中设置。还有,NFS挂载的存储可能不支持咨询锁,应该改用本地存储。检查文件系统类型,如果是NFS,需要迁移目录。 配置方面,可以尝试禁用文件锁定,比如在启动脚本中加入-Dweblogic.store.noLocking=true,但要注意这可能有风险。调整锁定超时时间,如-Dweblogic.store.lockTimeout=60,避免长时间等待。另外,更新WebLogic版本或打补丁可能修复已知的锁问题,需要查看Oracle的支持文档。 日志分析也很重要,查看domain目录下的日志,搜索FileStore或AdminHandler相关错误,确定具体锁定的文件。监控lsof和flock命令,找出被锁定的文件及进程。最后,确保文件权限正确,避免权限不足导致锁定失败。 要提醒用户操作前备份,生产环境谨慎,禁用锁可能影响集群一致性。可能需要综合多个步骤来解决这个问题。</think>### WebLogic文件锁定问题解决方案 WebLogic的$fcntl()$文件锁定错误通常发生在文件锁资源耗尽或存储子系统出现冲突时,以下是系统级的解决方案步骤: #### 一、检查进程残留和文件锁 1. **终止残留进程** ```bash ps -ef | grep weblogic.Store kill -9 <残留PID> ``` 注意:直接kill -9可能导致事务日志损坏,建议优先使用正常停止命令[^1] 2. **清理临时文件** ```bash rm -rf $DOMAIN_HOME/servers/<server_name>/tmp/DefaultStore* rm -rf $DOMAIN_HOME/servers/<server_name>/data/store/default/* ``` 操作前必须停止服务并备份原文件 #### 二、调整系统参数 1. **修改文件描述符限制** 在Linux系统中: ```bash ulimit -n 65535 ``` 永久修改需在$vi /etc/security/limits.conf$添加: ``` weblogic soft nofile 65535 weblogic hard nofile 65535 ``` 2. **禁用NFS存储** WebLogic的默认存储不支持NFS文件锁: ```bash df -hT /path/to/store ``` 如显示nfs类型,需迁移存储到本地文件系统 #### 三、修改WebLogic配置 1. **禁用文件锁(慎用)** 在启动脚本中加入: ```bash -Dweblogic.store.noLocking=true ``` 此操作会绕过文件锁检查,可能导致集群环境数据冲突 2. **调整锁定超时时间** 在domain环境变量中设置: ```bash -Dweblogic.store.lockTimeout=60 ``` 单位秒,默认值为0(无限等待) #### 四、诊断工具 1. **监控文件锁状态** ```bash lsof +D $DOMAIN_HOME/servers/AdminServer/tmp flock --verbose /path/to/lockfile ``` 2. **启用详细日志** 修改$logging.properties$文件: ```properties weblogic.store.FileStoreHandler.level=FINEST weblogic.store.admin.AdminHandler.level=FINEST ``` #### 五、补丁更新 检查Oracle官方补丁: ``` Patch 28186734: FILE LOCKING ERROR WHEN STARTING WEBLOGIC SERVER ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值