在EDI項目實施完成後,為了保證EDI系統可以在大資料量并發的情況下穩定運作,我們需要做壓力測試。
在做壓力測試時,會在短時間内産生大量的檔案,例如測試同時生成10000個EDI封包,多個端口短時間内可能就會産生大量的檔案及日志。如果需要性能調優,需要測試工作流在不同參數下的運作速度,我們需要進行多次測試,需要反複核對檔案處理的記錄,之前的測試記錄會讓我們核對起來不太友善。或者在做完壓力測試之後,我們需要清理不需要的檔案及記錄,如果打開每個端口的輸入和輸出清單去手動删除,無疑是比較麻煩的,今天的文章就來講解一下如何快速清除壓力測試産生的檔案及日志。
首先來了解一下知行之橋EDI系統的檔案、日志存儲的過程,端口處理完消息檔案之後,會産生傳輸日志以及檔案。端口處理過的檔案可以選擇是否保留消息副本,若不勾選,則無法在 輸出 和 輸入 頁籤下載下傳消息副本。

傳輸日志會預設存儲在知行之橋自帶的檔案資料庫中(Windows版為SQLite,Linux版為Derby)。
那麼在處理日志和檔案記錄時,可以參考以下兩種方式:
1.如果僅需清除日志,可以建立Script 端口,調用以下函數快速清除所有端口或指定端口的日志檔案
函數名稱(ops) | 作用 | 參數 |
portDeleteTransactionLogs | 删除傳輸日志 | 入參:ConnectorId=端口ID Direction=需要删除的檔案夾可設定為send、receive |
portListPorts | 根據端口清單進行循環 | 出參:portid=目前端口名稱 |
腳本寫法參考:
删除全部傳輸日志
1 2 3 4 5 6 7 | <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> |
删除指定端口傳輸日志
1 2 3 4 5 6 | <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通信專家