首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Slackware 12真的很慢

Slackware 12真的很慢
EN

Stack Overflow用户
提问于 2011-10-03 19:18:00
回答 2查看 598关注 0票数 1

您好,我对JDBC有一些问题,它太慢了,太难以置信了。

相同的代码在Windows与远程数据库的连接中非常完美。

但是对于松懈的软件,连接需要30秒,而第一次尝试总是失败的。我不得不做一个工作,让它再次尝试,以确保它的连接。但即便如此,也不应该太慢。

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

下面是用于创建数据库的代码

代码语言:javascript
复制
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驱动程序: 5.1.8、5.1.12、5.1.17 (都有相同的问题)

java : root@LinuxMZ:~/nx_dev/sicm# Java -version java版本"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秒。我试着从另一台机器连接,它运行得完美无缺。

EN

回答 2

Stack Overflow用户

发布于 2011-10-03 19:26:06

当查找您指定的名称时,30秒闻起来就像是DNS超时。

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

票数 2
EN

Stack Overflow用户

发布于 2013-04-27 21:15:01

看起来MySQL正在尝试使用nslookup来解析客户机。在当前的上下文中,客户端有127.0.0.1或192.168.1.XXX,我认为这是由于/etc/中的命名错误所致。如果没有错误的条目,请查看该文件!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7639588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档