gpt4 book ai didi

java - Slackware 12 真的很慢 JDBC

转载 作者:行者123 更新时间:2023-11-29 07:05:17 25 4
gpt4 key购买 nike

你好,我在使用 JDBC 时遇到了一些问题,它太慢了,令人难以置信。

相同的代码可以完美地与 Windows 连接到远程数据库。

但是使用 slackware,连接需要大约 30 秒,而且第一次尝试总是失败。我不得不做一些工作让它再次尝试以确保它连接。但即使它也不应该那么慢。

在 bash 中使用 mysql 命令似乎可以立即连接。

这是用来创建数据库的代码

public static Object createDBConnection(String dbType, String host, String hostPort, String dbName, String userName, String password) {

String connectionString = buildConnectionString(dbType, host, hostPort, dbName, userName, password);
Connection connection = null;

try {
if(dbType.equals(K_dbTypeMySQL)){
Class.forName("com.mysql.jdbc.Driver");
}else if(dbType.equals(K_dbTypeSqlServer)){
Class.forName("net.sourceforge.jtds.jdbc.Driver");
}else if(dbType.equals(K_dbTypeSqlServerExpress)){
Class.forName("net.sourceforge.jtds.jdbc.Driver");
}else if(dbType.equals(K_dbTypePostgres)) {
Class.forName("org.postgresql.Driver");
}


connection = DriverManager.getConnection(connectionString);
return connection;

}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}

public static String buildConnectionString(String dbType, String host, String hostPort, String dbName, String userName, String password){
String connectionString = null;
if((dbType.equals(K_dbTypeMySQL))){
connectionString = "jdbc:mysql://" + host + ":" + hostPort + "/" + dbName + "?user=" + userName + "&password=" + password;
}else if((dbType.equals(K_dbTypeSqlServer)))
connectionString = "jdbc:jtds:sqlserver://" + host + ":" + hostPort + ";databaseName=" + dbName + ";selectMethod=cursor;user=" + userName + ";password=" + password;
else if((dbType.equals(K_dbTypeSqlServerExpress)))
connectionString = "jdbc:jtds:sqlserver://" + host + ":" + hostPort + ";databaseName=" + dbName + ";selectMethod=cursor;user=" + userName + ";password=" + password;
else if(dbType.equals(K_dbTypePostgres))
connectionString = String.format("jdbc:postgresql://%s:%s/%s?user=%s&password=%s",host,hostPort,dbName,userName,password);


return connectionString;
}

我尝试使用不同的驱动程序,但都是一样的,第一次尝试总是需要很长时间才能连接(20 秒),第二次需要大约 2 秒。

我在尝试使用 URLConnection 打开 https url 时遇到同样的问题,第一次总是失败,第二次没问题。

有人知道这个问题吗?由于我在用 java 打开 HTTPS url 时遇到问题,也许 SSL 有问题? mysql以任何方式使用SSL吗?

服务器版本:5.1.41

主机:本地主机

jdbc driver: 5.1.8, 5.1.12, 5.1.17 (都有同样的问题)

Java 构建:root@LinuxMZ:~/nx_dev/sicm# java -versionJava 版本“1.6.0_06”Java(TM) SE 运行时环境(build 1.6.0_06-b02)Java HotSpot(TM) 客户端 VM(build 10.0-b22,混合模式,共享)

//编辑127.0.0.1和localhost做同样的问题

谢谢你的帮助


还没有,DBManager.createConnection 挂起 20 秒。我尝试从另一台机器连接并且它工作完美。

最佳答案

在查找您提供的名称时,30 秒听起来像是 DNS 超时。

您可以通过使用 IP 地址作为主机名来确认这一点。

关于java - Slackware 12 真的很慢 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7639588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com