我迫切希望得到一些帮助。
当大量消息通过不同服务器上的 TCP 套接字连接发送以进行 HSM 卡验证时,我们遇到了问题。
这就是我们为批量测试测试的内容:我们以 15 次/秒的速度处理 30,000 笔交易的 3 个区块进行了测试,并且在第三个区块交易开始被拒绝。
当时的情况是:
- 我们成功地处理了区块 1 和 2 的 30,000 笔交易。
- 在第三个区块,系统刚刚成功处理了 8,000 个事务,之后与 HSM 的连接被阻止。
- 我们看到所有 HSM 套接字都在使用中,因此事务被拒绝。
我们认为由于消息量大,一些套接字没有关闭或超时
以下是代码的要点。
; Open the device
OPEN SOCK:(CONNECT=HOST_":"_PORT_":TCP":DELIMITER=$C(13,10,58,27,95):ATTACH="HSMCLIENT"):TIMOUT:"SOCKET"
ELSE SET ER=1 CLOSE SOCK QUIT "-1"
; Use the socket
USE SOCK
; Write the request. The request message is packed and the bytesteam is written
WRITE HREQ,#
; Read the first two bytes from the socket to identify the length of the reponse
READ BRESP#2:TIMOUT ELSE SET ER=1 CLOSE SOCK QUIT "-1"
; Calculate the length of the incoming data
SET RESPLEN=$A(BRESP,1)_$A(BRESP,2)
; Now read the data of the calculated length
READ BRESP#RESPLEN:TIMOUT ELSE SET ER=1 CLOSE SOCK QUIT "-1"
; Cleanup
CLOSE SOCK
#ENDBYPASS
如果您能提供任何建议或建议,将不胜感激。
谢谢