网络应用的访问效率问题,高手请进
最近,我们公司基于hibernate+jsp+struts+weblogic开发了一套类似于taobao的网上应用.在后台的connection管理方面,我们使用的是dbcp的数据库连接池。在设置dbcp时,我们设置setMaxActive为20,setMaxIdle为了5。当有一个连接过来后,先从这个池中取连接,然后分配给hibernate使用。
我们的应用发现了一个比较有趣的现象,当有多个用户访问应用时,用户登录和查询数据的速度还可以,但是,当没有用户访问应用时,对应用的测试(如:用户登录,查询数据等)访问就变得很慢。从服务器端的监测信息来看,应用CPU占有率比较高,heap和 memory的占有率比较高也比较高。
总之,在多个用户同时访问时,应用的效率反而好了。反之,效率比较差。
我想问的是,这种情况的发生,通常会是什么原因造成的。
如果有类似经验的XDJM,一定得分享一下成功解决的经验。
只要有不错提议,我将万分感谢和及时散分。先谢谢大家了!!
--------------------编程问答-------------------- 既然这样,就做个定时程序,模拟用户不断地去访问啊,哈哈。。。下下策,仅供参考。应当与连接池的设置有关系,驱动程序是什么呢? --------------------编程问答-------------------- private static void init() {
try {
InputStream is = DBManager.class.getResourceAsStream("/db.properties");
Properties prop = new Properties();
prop.load(is);
// Create a OracleDataSource instance
bds = new BasicDataSource();
// Sets the database URL
bds.setUrl((String) prop.getProperty("dbURL"));
// Sets the user name
bds.setUsername((String) prop.getProperty("username"));
// Sets the password
bds.setPassword((String) prop.getProperty("password"));
// Sets max active thread
bds.setMaxActive(6);
// Sets max idle thread
bds.setMaxIdle(4);
bds.setInitialSize(2);
bds.setMinIdle(2);
bds.setTestOnBorrow(true);
bds.setTestOnReturn(true);
bds.setTestWhileIdle(true);
}
这段就是初始化连接池的代码,应该是没有问题的! --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 有问题请先GOOGLE,BAIDU
补充:企业软件 , 中间件