在EDI项目实施完成后,为了保证EDI系统可以在大数据量并发的情况下稳定运行,我们需要做压力测试。
在做压力测试时,会在短时间内产生大量的文件,例如测试同时生成10000个EDI报文,多个端口短时间内可能就会产生大量的文件及日志。如果需要性能调优,需要测试工作流在不同参数下的运行速度,我们需要进行多次测试,需要反复核对文件处理的记录,之前的测试记录会让我们核对起来不太方便。或者在做完压力测试之后,我们需要清理不需要的文件及记录,如果打开每个端口的输入和输出列表去手动删除,无疑是比较麻烦的,今天的文章就来讲解一下如何快速清除压力测试产生的文件及日志。
首先来了解一下知行之桥EDI系统的文件、日志存储的过程,端口处理完消息文件之后,会产生传输日志以及文件。端口处理过的文件可以选择是否保留消息副本,若不勾选,则无法在 输出 和 输入 选项卡下载消息副本。
传输日志会默认存储在知行之桥自带的文件数据库中(Windows版为SQLite,Linux版为Derby)。
那么在处理日志和文件记录时,可以参考以下两种方式:
1.如果仅需清除日志,可以创建Script 端口,调用以下函数快速清除所有端口或指定端口的日志文件
函数名称(ops) | 作用 | 参数 |
---|---|---|
portDeleteTransactionLogs | 删除传输日志 | 入参:ConnectorId=端口IDDirection=需要删除的文件夹可设置为send、receive |
portListPorts | 根据端口列表进行循环 | 出参:portid=当前端口名称 |
脚本写法参考:
删除全部传输日志
代码语言:javascript复制<rsb:call op="portListPorts" out="out">
<rsb:set attr="data.ConnectorId" value="[out.portid]"/>
<rsb:set attr="data.Direction" value="Send"/>
<rsb:call op="portDeleteTransactionLogs" in="data" />
<rsb:set attr="data.Direction" value="Receive"/>
<rsb:call op="portDeleteTransactionLogs" in="data" />
</rsb:call>
删除指定端口传输日志
代码语言:javascript复制<rsb:set attr="data.ConnectorId" value="端口名"/>
<rsb:set attr="data.Direction" value="Send"/>
<rsb:set attr="data.WorkspaceId" value="工作区ID"/>
<rsb:call op="portDeleteTransactionLogs" in="data" />
<rsb:set attr="data.Direction" value="Receive"/>
<rsb:call op="portDeleteTransactionLogs" in="data" />
如上图所示,将以上脚本写入Script端口的 设置 选项卡。 在Script端口的 输出 选项卡,手动点击接收,此时会执行Script端口中所写的脚本,等待执行完成即可。
2.删除所有日志以及文件
知行之桥EDI系统的文件存储于data文件夹,日志存储于db的文件数据库中,如果需要重置可以对这两个文件夹进行删除,例如在进行多轮压力测试时需要省去繁杂的删除记录操作,快速进入下一轮,在测试结束后再统一清除记录,可以参考以下操作步骤:
1)导出当前工作流 2)停止知行之桥服务 3)对data、db文件夹进行重命名,例如data_backup1,db_backup1 4)重启知行之桥服务,这个时候可以发现,data、db文件夹重新生成 5)导入工作流 6)待所有测试任务结束后,批量删除冗余的文件夹,例如rm -rf data_backup*
以上就是快速清除传输日志以及文件的方法,其实此方法不止适用于压力测试,如果需要手动删除文件记录、删除文件释放磁盘的空间,除了可以使用知行之桥自带的归档/删除功能,也可以采用本文描述的方法。
更多EDI信息,请参阅: EDI是什么?
原文链接