堆内存以及磁盘空间使用情况预警

Published On: 2022年4月12日Categories: 帮助文档, 知识库Views: 1

© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号

使用知行之桥EDI系统时,由于业务数据量的增多,难免会遇到一些系统异常情况,为了保证企业生产环境的稳定运行,EDI系统自带了错误邮件通知功能。此功能保证了在EDI系统自动处理数据的过程中可以将异常信息及时告知用户,使用户收到邮件及时处理,保证数据的正常传输。

那么除了一些常见的异常情况,随着企业业务数据量的增大,现有服务器环境可能无法提供足够的磁盘空间存放数据处理的日志和文件,特别是在使用跨平台版本(JAVA版本)的知行之桥EDI系统时,此情况比较常见。基于此背景,我们提供了堆内存占用超过80% 邮件预警以及磁盘空间使用率超过80%邮件预警功能。具体实现步骤如下:

一、堆内存占用超过 80% 邮件预警

Java堆内存管理是影响性能的主要因素之一,堆内存过高可能会造成内存溢出,导致进程无法无法访问,从而使EDI系统无法正常运行。为了避免这一问题的出现,提前预警,可以参考以下步骤进行配置:

1.新建监控脚本java_heap_usage_monitor.sh文件,监控脚本的具体代码如下(注:其中_java=/home/java/jdk1.8.0_201/bin/java是当前环境中java执行路径,需要根据自身情况进行修改):

#!/usr/bin/env bash

set -e

while getopts "v" opt; do
  case $opt in
    v) debug_mode=true;;
  esac
done

function _log_msg() {
  if [ $debug_mode ]; then
    echo $1
  fi
}

function error() {
  echo $1 >&2
}

_java=/home/java/jdk1.8.0_201/bin/java

# Check if arcesb service is live
arcesb_pid=$(ps -aux | grep -e "java.*arcesb.jar" | grep -v grep | awk '{ print $2 }')
if [ ! -n "$arcesb_pid" ]; then
  error "Failed to aceess arcesb process."
  exit 2
fi

_log_msg "arcesb pid: $arcesb_pid"

# Get java major version
if [[ "$_java" ]]; then
  java_version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
  _log_msg "java version: $java_version"
  java_major_version=$(echo $java_version | awk -F '.' '{ print $1}')
  _log_msg "java major version: $java_major_version"
fi

if [ $(type -p jmap) ]; then
  _jmap=jmap
else
  _jmap=/home/java/jdk1.8.0_201/bin/jmap
  _log_msg "jmap not found, set default to $_jmap"
fi


# Get arcesb service heap usage raw result
if [ "$java_major_version" = "11" ]; then
  heap_res=$(sudo jhsdb jmap --heap --pid $arcesb_pid)
  _log_msg "sudo jhsdb jmap --heap --pid $arcesb_pid:"
  _log_msg "$heap_res"
else
  heap_res=$("$_jmap" -heap $arcesb_pid)
  _log_msg "sudo $_jmap -heap $arcesb_pid"
  _log_msg "$heap_res"
fi

# Get arcesb service heap usage percent
if echo "$heap_res" | grep -q -i "garbage-first"; then
  _log_msg "GC Algorithm: G1"
  key_word="g1 heap"
elif echo "$heap_res" | grep -q -i "parallel gc"; then
  _log_msg "GC Algorithm: Parallel GC"
  key_word="old gen"
elif echo "$heap_res" | grep -q -i "mark sweep"; then
  _log_msg "GC Algorithm: Mark Sweep"
  key_word="tenured"
else
  error "Unknow GC Algorithm"
fi

if type -p bc > /dev/null; then
  echo "$heap_res" | grep -i "$key_word" -A 10 | grep -e "used$" | head -1 | awk '{ print $1 }' | awk -F '%' '{ print "scale=0;" $1 " / 1" }'  | bc -l
else
  _log_msg "bc command not found"
  echo "$heap_res" | grep -i "$key_word" -A 10 | grep -e "used$" | head -1 | awk '{ print $1 }' | awk -F '%' '{ print $1 }' | awk -F '.' '{ print $1 }'
fi

if [ "$?" != "0" ]; then
  error "Failed to parse the result of java heap usage."
  exit 3
fi

2.将监控脚本java_heap_usage_monitor.sh文件拷贝至部署EDI的服务器。 3.给予java_heap_usage_monitor.sh文件执行权限,修改文件权限命令如下:

sudo chmod a+x java_heap_usage_monitor.sh

4.在服务器上测试监控脚本是否工作,执行以下命令,成功执行可以看到当前EDI系统占用堆内存的大小:

./java_heap_usage_monitor.sh

5.在EDI系统页面创建Script端口,修改监控脚本java_heap_usage_monitor.sh文件的存放路径,以及邮件预警收件箱地址。

edi

Script端口具体代码如下:







    
      
    
    
    
          
          
          
          
          
      
    
        
    
    

6.设置Script端口自动化功能,设置定时接收,可以选择每天8点自动获取检测堆内存使用情况:

edi

7.配置完成后,知行之桥EDI系统每天8点检测堆内存使用情况,若是堆内存使用超过80%会收到如下主题提示的邮件,邮件正文包含当前进程堆内存使用率:

edi

二、磁盘空间使用率超过80%预警

磁盘空间不足也是影响EDI环境正常运行的一大原因,磁盘空间不足会导致数据无法正常处理,日志信息无法写入。同样为了避免这种情况出现,提前预警,可以参考以下方法进行配置:

1.在EDI系统页面新建Script端口,修改邮件预警收件箱地址信息。

edi

Script端口具体代码如下:





  
  
  
    




    
    
    
    
  

2.设置Script端口自动化功能,设置定时接收,可以选择每天早上8点自动获取检测磁盘空间使用情况:

edi

3.配置完成后,EDI系统每天8点检测磁盘空间使用情况,若是磁盘空间使用率超过80%会收到如下主题提示的邮件,邮件正文包含当前磁盘空间使用率:

edi

知行之桥2021版自带对于内存使用情况以及磁盘使用情况的预警,支持的功能包括:

check 频率:一天一次。 app db: 如果是derby或者sqlite,超过100w条log,警告 内存:超过60%,警告 磁盘:使用超过60%, 警告 文件:在Send, Sent, Received, Logs/Sent, Logs/Received中,有超过5k个文件,警告 正在删除文件:在~Deleted中存在三个小时未能删除的文件,警告

扩展阅读:EDI是什么?

了解更多EDI信息,请您电话 133-2467-3605 或邮件 sales@kasoftware.cn 联系我们。点击下方蓝色按钮,即可免费试用EDI软件。

注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

为什么选择

知行之桥®?​

根据企业规模与集成需求,提供从本地部署到云端托管的灵活选择

可视化 EDI 工作流

基于拖拽式图形化设计器,零代码构建完整 EDI 业务流程,满足复杂供应链自动化场景。

Odette & Drummond 认证

通过 Odette(OFTP) 与 Drummond(AS2) 权威认证,确保与主机厂安全合规、高可靠的数据交换。

多系统集成能力

提供数据库、REST/SOAP、FTP/SFTP 等标准化接口,实现 ERP、WMS、MES 等系统的双向数据自动同步。

数据映射格式转换

内置可视化 Mapping 编辑器,零代码实现 EDI 报文与企业内部数据格式(XML/JSON…)的映射转换及复杂规则处理。

实时监控预警机制

全流程可视化监控报文状态,支持邮件、钉钉、企业微信自动预警,保障 JIT 交付的稳定性与及时性。

多工厂支持

支持集团级多组织、多工厂架构,实现数据隔离与权限管控,统一平台集中运维,满足大型制造企业多地点协同需求。