QuickFix/J 2.3.0重复发起登录请求问题求助
QuickFix/J 2.3.0 环境特定连接异常问题
问题现象
- 会话初始连接正常,可接收证券列表,心跳包交互无异常
- 某次心跳无响应,发送TEST请求后因等待心跳超时断开连接
- 08:53:48.656 发送登录请求,08:53:48.773 收到登录响应,但事件日志显示08:53:59因等待登录响应超时断开连接
- 此后每30秒发起新登录请求,该重复行为持续25分钟
- 重复登录期间,事件日志出现多种异常:
- 08:55:48: 断开连接:未发送请求即收到登录响应
- 09:01:49: 断开连接:遇到END_OF_STREAM
- 09:05:49: 收到登录请求
- 09:06:04: 发送测试请求TEST
- 09:06:31: 断开连接:等待心跳超时
- 短暂恢复正常连接,接收证券状态和行情数据后,再次触发心跳超时断开,随后重复登录循环
- 再次重复登录时出现新的状态校验错误(MsgType=y为心跳消息,MsgType=f为行情请求消息):
20230530-09:19:33: quickfix.SessionException Logon state is not valid for message(MsgType=y) 20230530-09:19:33: Already disconnected: Verifying message failed: quickfix.SessionException: Logon state is not valid for message (MsgType=y) 20230530-09:19:33: quickfix.SessionException Logon state is not valid for message (MsgType=y) 20230530-09:19:33: Already disconnected: Verifying message failed: quickfix.SessionException: Logon state is not valid for message (MsgType=y) 20230530-09:19:33: quickfix.SessionException Logon state is not valid for message (MsgType=y) 20230530-09:19:33: Already disconnected: Verifying message failed: quickfix.SessionException: Logon state is not valid for message (MsgType=y) 20230530-09:19:33: quickfix.SessionException Logon state is not valid for message (MsgType=f) - 数分钟后恢复正常连接,业务回归正轨
- 该问题连续多日出现,仅特定环境触发,其他服务器无此异常
FIX配置
[default] ConnectionType=initiator ReconnectInterval=30 FileStorePath=logs/fix FileLogPath=logs/fix StartTime=00:00:00 StartDay=Sun EndTime=23:59:59 EndDay=Sat SocketConnectHost=**** [SESSION] BeginString=FIX.4.4 SenderCompID=**** TargetCompID=**** HeartBtInt=30 ResetOnLogon=Y UseDataDictionary=Y DataDictionary=FIX44.xml ValidateFieldsOutOfOrder=N ValidateUnorderedGroupFields=N SocketConnectHost=**** SocketConnectPort=**** CheckLatency=N SocketUseSSL=Y CipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA SocketKeyStore=**** SocketKeyStorePassword=**** KeyStoreType=PKCS12 EnabledProtocols=TLSv1
排查与修复建议
网络链路校验
- 检查异常环境与FIX对手方之间的网络延迟、丢包率,使用
ping、traceroute工具确认链路稳定性 - 核实防火墙、负载均衡设备的会话超时规则,确认是否存在SSL/TLS数据包拦截或会话提前回收的情况
- 检查异常环境与FIX对手方之间的网络延迟、丢包率,使用
SSL/TLS配置优化
- 当前使用的
TLSv1协议版本兼容性差且存在安全风险,尝试升级为TLSv1.2或TLSv1.3,同步调整CipherSuites为现代加密套件(如TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) - 使用
keytool命令验证异常环境中PKCS12密钥库的完整性:keytool -list -v -keystore [密钥库路径] -storetype PKCS12,确认证书有效期、密钥匹配正常
- 当前使用的
QuickFix/J版本与参数调整
- 升级QuickFix/J至最新稳定版(2.3.0版本存在已知的会话状态管理bug),新版本修复了多个登录超时、状态校验相关问题
- 调整会话超时参数:将
HeartBtInt从30秒延长至60秒,避免因网络波动触发误判;同时检查ReconnectInterval是否与对手方的会话回收策略冲突 - 尝试将
ResetOnLogon改为N,避免重复登录时的会话状态重置导致消息校验异常
日志与时间同步排查
- 开启QuickFix/J的DEBUG级别日志,捕获消息收发、状态转换的详细细节,重点关注登录响应的时间戳、消息序列号匹配情况
- 确认异常环境与对手方服务器的系统时间同步状态,避免因时间偏差导致超时判断错误
内容的提问来源于stack exchange,提问作者user666
相关产品推荐
相关产品推荐

