gbase8s数据库 tcp连接不同阶段的超时处理

1 在数据库监听未启动时

目标端口未监听,会返回RST(Reset)报文,客户端会立即感知连接失败(无重传机制)。此时延迟主要由网络往返时间(RTT)决定,通常为几毫秒到几百毫秒。

2 在建立socket连接时

LOGINTIMEOUT 参数生效,该参数为socket超时参数,单位毫秒

java 复制代码
Socket var5 = new Socket();
if (var3 > 0) {
    var5.connect(var4, var3);
} else {
    var5.connect(var4);
}

3 客户端的连接检测机制

IFX_SOC_KEEPALIVE 参数生效

在配置后,使用操作系统 net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes 参数进行tcp keepalive 检测

4 数据库端连接监测机制

数据库端无需配置,会按照上述三个参数进行连接检测,若net.ipv4.tcp_keepalive_time 为0 则默认30s

5 执行sql超时或者断网等情况

IFX_SOC_TIMEOUT 参数生效 单位 毫秒

6 登录信息验证超时检测

GBASEDBTCONTIME 参数生效,单位 毫秒

java 复制代码
this.sendConnectionRequest(var1, var2, var3, var4, var5, var6, var7);
if (this.conTime > 0) {
    try {
        int var17;
        if (!this.SSLconnection) {
            var17 = this.asfSocket.getSoTimeout();
            this.asfSocket.setSoTimeout(this.conTime * 1000);
            this.recvConnectionResponse();
            this.asfSocket.setSoTimeout(var17);
        } else {
            var17 = this.asfSSLSocket.getSoTimeout();
            this.asfSSLSocket.setSoTimeout(this.conTime * 1000);
            this.recvConnectionResponse();
            this.asfSSLSocket.setSoTimeout(var17);
        }
    } catch (Exception var15) {
        this.disconnect();
        throw var15;
    }
} else {
    this.recvConnectionResponse();
}

测试程序如下

java 复制代码
import com.gbasedbt.jdbc.IfxSqliConnect;
import java.sql.*;
import java.util.Properties;
public class test {
    static {
        try {
            Class<?> aclass = Class.forName("com.gbasedbt.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        String sql="select vtime(1) from dual;";
        Properties properties= new Properties();
        properties.setProperty("DATABASE","xms");
        properties.setProperty("GBASEDBTSERVER","gbase171");
        properties.setProperty("CONNECTIONCLASS","com.gbasedbt.jdbc.IfxSqliConnect");
        properties.setProperty("PROTOCOLCLASS","com.gbasedbt.jdbc.IfxSqli");
        properties.setProperty("USER","gbasedbt");
        properties.setProperty("DB_LOCALE","zh_CN.utf8");
        properties.setProperty("USERURL","jdbc:gbasedbt-sqli://172.16.39.171:9099/xms:GBASEDBTSERVER=gbase171;DB_LOCALE=zh_CN.utf8;IFX_SOC_TIMEOUT=3000000;");
        properties.setProperty("PASSWORD","Ootr123!");
        properties.setProperty("LOGINTIMEOUT","500000");
        properties.setProperty("IFX_SOC_TIMEOUT","300000");
        properties.setProperty("GBASEDBTCONTIME","200000");
        //properties.setProperty("PROTOCOLTRACEFILE","/home/gbasedbt/xx.log");
        //properties.setProperty("PROTOCOLTRACE","5");
        IfxSqliConnect connection= null;
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println("建立连接时间"+currentTimeMillis);
        try {
            connection = new IfxSqliConnect("gbasedbt","Ootr123!","172.16.39.171:9099",properties);
            if(connection!=null){
                System.out.println("连接成功");
            }
            PreparedStatement statement= connection.prepareStatement(sql);
            statement.executeQuery();
            statement.close();
            connection.close();
            long currentTimeMillis1 = System.currentTimeMillis();
            System.out.println("执行sql成功耗时"+(currentTimeMillis1-currentTimeMillis));
        } catch (SQLException e) {
            long currentTimeMillis1 = System.currentTimeMillis();
            System.out.println("获取连接失败,耗时"+(currentTimeMillis1-currentTimeMillis));
            e.printStackTrace();
        }
    }
}
相关推荐
会员果汁1 小时前
网络工程-路由策略概述
网络
mounter6258 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
等....8 小时前
Minio使用
数据库
win x9 小时前
Redis 使用~如何在Java中连接使用redis
java·数据库·redis
ACP广源盛1392462567310 小时前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
迷枫71210 小时前
DM8 数据库安装实战:从零搭建达梦数据库环境(附全套工具链接)
数据库
XDHCOM10 小时前
PostgreSQL 25001: active_sql_transaction 报错原因分析,故障修复步骤详解,远程处理解决方案
数据库·sql·postgresql
嵌入式小企鹅11 小时前
蓝牙学习系列(八):BLE L2CAP 协议详解
网络·学习·蓝牙·ble·协议栈·l2cap
卤炖阑尾炎11 小时前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
广州灵眸科技有限公司12 小时前
为RK3588注入澎湃算力:RK1820 AI加速卡完整适配与评测指南
linux·网络·人工智能·物联网·算法