我是使用JDBC + 数据库连接池 访问局域网里的数据库的,不知道为什么当程序启动后第一次打开网页,页面上需要从数据库取数据的地方需要等待10秒左右才能显示出来,如果把数据放到我本机上访问没有问题,分析了半天,试了很多办法就是没能解决解决,请大家帮我分析分析到底是什么原因?

解决方案 »

  1.   

    你用MYSQL的客户端执行SQL也会很慢吗?
      

  2.   

    tomcat 需要加载  第一次都是这样的  转换成缓存后  就快了  
      

  3.   

    第一次很慢, 有可能是java编译问题. 
    你给程序调用数据库部分加上时间看看了吗?
    是在执行SQL的时候慢,还是具体哪一部分慢.在程序里面可以加long startTime=System.currentTimeMillis(); //开始时间....... 你的source codelong endTime=System.currentTimeMillis(); //结束时间最后打印这2个时间. 你可以给多个地方加.看看具体哪一部分执行的慢.你这样提问,可能性太多. 要先把问题最小化. 从那里开始入手吧. 这样会不会更好啊?
      

  4.   

    什么都可以的啊.
    你可以在控制台打 mysql -u 用户 -p 密码 -h host -P 端口(如果不是默认端口)再connect 数据库. 试试快不快啊.
      

  5.   


    这是连接数据库的代码package com.csrme.util;import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.sql.DataSource;public class DataBaseConnection {
    private static DataBaseConnection dbPool;
    private DataSource dataSource;

    static {
    dbPool = new DataBaseConnection();
    } public DataBaseConnection() {
    try {
    Context initCtx = new InitialContext();
    if (initCtx == null)
    throw new Exception("连接池异常 001");
    Context ctx = (Context) initCtx.lookup("java:comp/env");
    if (ctx != null)
    dataSource = (DataSource) ctx.lookup("Csrme_System_DBpool");
    if (dataSource == null)
    throw new Exception("连接池异常 002");
    } catch (Exception e) {
    e.printStackTrace();
    }
    } public final static DataBaseConnection getInstance() {
    return dbPool;
    } public final Connection getConnection() {
    try {
    return dataSource.getConnection();
    } catch (SQLException e) {
    throw new RuntimeException("连接数据库错误异常 003", e);
    }
    } public static void close(ResultSet rs, Statement st, Connection conn) {// 关闭连接 try {
    if (null != rs) {
    rs.close();
    }
    if (null != st) {
    st.close();
    }
    if (null != conn) {
    conn.close();
    }
    } catch (SQLException sql) {
    sql.printStackTrace();
    }
    }}
      

  6.   

    或者你试试用MYSQL的随意客户端连接试试吧. 是不是很慢.
    如果很慢, 那是数据库那边的问题了.
      

  7.   


    这是数据库连接池代码
    <?xml version="1.0" encoding="UTF-8"?><Context path="/Csrme_System" docBase="Csrme_System" debug="5"> <!-- 数据源配置,放在tomcat下conf/catalina/localhost包下 -->
    <Resource name="Csrme_System_DBpool"   
           auth="Container"   
           type="javax.sql.DataSource"   
           driverClassName="com.mysql.jdbc.Driver"   
           url="jdbc:mysql://192.168.0.222:3306/csrme?useUnicode=true&amp;characterEncoding=utf-8"   
           username="root"   
           password="111111"   
           maxActive="10"   
           maxIdle="20"
           maxWait="1000" />
           
    </Context>
      

  8.   

    如果是数据库问题.
    可以看一下以下的连接.http://translate.googleusercontent.com/translate_c?hl=zh-CN&langpair=en%7Czh-CN&u=http://mirrors.dotsrc.org/mysql/doc/refman/4.1/en/dns.html&rurl=translate.google.com.hk&usg=ALkJrhj9QwoQhrPJcLG7zMoETNYoZUEzIA
      

  9.   

     my.ini 文件 [mysqld] 下
       skip-name-resolve