coabr问题记录

alibaba corba timeout问题

00:32:26,258 WARN [thread=Processor1-E15,class=ServerConnection,host=10.1.1.91,port=2441,schema=facebook_onlinegame_db]global_new.default{SHOW FULL TABLES LIKE 'PROBABLYNOT'}

java.util.concurrent.TimeoutException

at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:228)

at java.util.concurrent.FutureTask.get(FutureTask.java:91)

at com.alibaba.cobar.server.node.MySQLChannel.connect(MySQLChannel.java:185)

at com.alibaba.cobar.server.node.MySQLDataSource.getChannel(MySQLDataSource.java:156)

at com.alibaba.cobar.server.node.MySQLDataNode.getChannel(MySQLDataNode.java:115)

at com.alibaba.cobar.server.node.MySQLDataNode.getChannel(MySQLDataNode.java:107)

at com.alibaba.cobar.server.executor.MultiNodeExecutor$3.run(MultiNodeExecutor.java:206)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)  

      最近发现corba的stout.log有时警告级别的日志,看起来是新建网络链接时time out异常,于是checkout corba的源码,追踪到相应的代码行,发现确实是由于超时引起的异常,corba也提供的相应的参数对这个时间进行配置,于是将time out设置到60秒,原来corba配认是10秒。进一步分析,我觉得原因可能是公司内部使用vpn,连接数据库也是通过vpn过去,由于网络不稳定,导致创建新连接时超时。

corba相应的超时设定,在schema.xml中 dataNode节点 waitTimeout属性

<!--数据节点由主、备数据源,心跳,连接池等配置组成。-->

    <dataNode name="dn_shards">

        <property name="dataSource">

            <!--第一行dataSourceRef表示主数据源-->

            <!--

                三个数据节点的主数据源,可用逗号分隔,支持$1-3的缩写形式, 表示ds_shard_master[1],

                ds_shard_master[2], ds_shard_master[3]

            -->

            <dataSourceRef>facebook_onlinegame_ds_shards[0],facebook_onlinegame_ds_shards$1-3</dataSourceRef>

            <!--第二行dataSourceRef表示备数据源-->

            <!-- <dataSourceRef>ds_single_slave</dataSourceRef> -->

            <!--如果需要一主多备的情况,可以将第二备数据源配置在第三行,以此类推-->

            <!-- <dataSourceRef>ds_single_slave2</dataSourceRef> -->

        </property>

        <!--Cobar与后端数据源连接池大小设置-->

        <property name="poolSize">16</property>

        <!--Cobar通过心跳来实现后端数据源HA,一旦主数据源心跳失败,便切换到备数据源上工作-->

        <!--Cobar心跳是通过向后端数据源执行一条SQL语句,根据该语句的返回结果判断数据源的运行情况-->

        <property name="heartbeat">select 1</property>

        <property name="waitTimeout">60000</property>

    </dataNode>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值