私はこれについて何らかの助けを得ることを切望しています。
HSM カードの検証のために、別のサーバー上の TCP ソケット接続を介して大量のメッセージが送信されると、問題が発生します。
これは、ボリューム テストでテストしたものです。15 トランザクション/秒で 30,000 トランザクションの 3 ブロックを処理してテストし、3 番目のブロックでトランザクションが拒否され始めました。
状況は次のとおりです。
- 30,000 件のトランザクションでブロック 1 と 2 を正常に処理しました。
- 3 番目のブロックで、システムは 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
本当に感謝される提案や推奨事項を提供できれば。
ありがとう