Я отчаянно нуждаюсь в помощи по этому вопросу.
У нас возникают проблемы при отправке тома сообщений через TCP Socket Connection на другой сервер для проверки карты HSM.
Вот что мы тестировали для объемного тестирования:
Мы протестировали с обработкой 3 блоков по 30 000 транзакций со скоростью 15 транзакций в секунду, а в третьем блоке транзакции начали отклоняться.
Ситуация была:
- Мы успешно обработали блоки 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
Если вы можете предоставить какие-либо предложения или рекомендации, которые будут по достоинству оценены.
Спасибо