NutzCN Logo
问答 多数据源如何做到互不影响
发布于 3038天前 作者 yahtob 3349 次浏览 复制 上一个帖子 下一个帖子
标签:

untitled1_png 我配置两个数据源。其中一个数据源挂了,系统就卡住了。。也访问不了其他模块了。

32 回复

不要截图啊!

来自炫酷的 NutzCN

啊。。。为啥

不要截图代码!

启动的时候卡住?

来自炫酷的 NutzCN

@wendal 不是。我在调用第二个数据源时,才会卡住。导致整个系统其它模块都不能访问了。

用的是druid? @yahtob

来自炫酷的 NutzCN

嗯呢。dataSource4:{
type:"com.alibaba.druid.pool.DruidDataSource",
events:{
depose:"close"
},
fields:{
url:"jdbc:mysql://localhost/ss3000cms?useUnicode=true&characterEncoding=utf-8",
username:"root",
password:"pass",
maxActive:20,
testWhileIdle:true,
validationQuery:'SELECT COUNT(*) FROM SYS_DBTEST',
removeAbandoned:true ,
removeAbandonedTimeout:18000,
filters:"stat"
}
},
callDao : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer:'dataSource4'}]
}

@yahtob filters加个配置

maxWait : 5000

来自炫酷的 NutzCN

@wendal 给力。3Q兽总

@wendal 兽总。社区的推送很不错呀。有没有源码

@yahtob 网站源码在页脚有地址,客户端源码在新闻区找

来自炫酷的 NutzCN

没有用呢,还是卡死

配置了 maxWait,一个数据源挂了,整个都卡死了

那你得debug一下卡在哪里了

断点不进入 controller,提示出错之后才会进入

所以你说的卡,只是停顿了15秒的意思?

大致45秒,开了两个定时任务,从第二个数据库定时同步数据,现在第二个数据挂了,每个请求都要等40秒左右,等包 tcp 错误后才进去

报错信息贴出来看看

org.nutz.ioc.IocException: [bZFRgisterResultJob, bZFRrgisterResultService, daoBaoBan, dataBaoBanSource] # FAIL to create Ioc Bean name=[dataBaoBanSource]
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:149)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:210)
	at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:75)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:210)
	at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:75)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:210)
	at org.nutz.ioc.val.ReferTypeValue.get(ReferTypeValue.java:26)
	at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:31)
	at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:56)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:135)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:210)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:239)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:146)
	at org.nutz.integration.quartz.NutQuartzJobFactory.newJob(NutQuartzJobFactory.java:27)
	at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)
	at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:375)
Caused by: java.lang.RuntimeException: java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
	at org.nutz.lang.Lang.wrapThrow(Lang.java:182)
	at org.nutz.lang.Lang.wrapThrow(Lang.java:181)
	at org.nutz.ioc.trigger.MethodEventTrigger.trigger(MethodEventTrigger.java:21)
	at org.nutz.ioc.weaver.DefaultWeaver.onCreate(DefaultWeaver.java:72)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:138)
Caused by: java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:711)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:558)
	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148)
	at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:211)
	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1423)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1477)
	at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:677)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.nutz.ioc.trigger.MethodEventTrigger.trigger(MethodEventTrigger.java:18)

我感觉是卡在 MapLoader.load 了

换成SimpleDataSource试试吧,这个数据源就直连,仅取决于连接失败的时长

放弃druid ,改用HikariCP,问题解决

HikariCP 完全不卡?

原来好像druid有个配置

现在做性能测试

@wendal 昨天那个还是卡,卡在 ioc get 那里

那你之前说好了是啥情况?

在本机测试的,开发的机器有点多,分担了定时任务的执行,不一定每次都是自己的机器去执行,所以感觉不出来

走SimpleDataSource吧

SimpleDataSource 是不是只能测试时使用?

添加回复
请先登陆
回到顶部