zoukankan      html  css  js  c++  java
  • dubbox、zookeeper BUG记录

    主要错误信息:

    dubbo:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method...

    Caused by: com.alibaba.dubbo.remoting.RemotingException: message can not send, because channel is closed .

    com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout.

    MySQL版本:8.0.15

    Eclipse版本: 2018-12 (4.10.0)

    dubbox版本:2.8.4

    zookeeper版本:3.4.6

    近期使用dubbox、zookeeper搭建一个项目时主要出现上述问题。

    一开始定位最简单的BUG(timeout),以为是设置的timeout时间不够(默认1000ms),后来设置将超时时间加长为60000ms。

    <dubbo:provider delay="-1" timeout="60000" retries="0"/>

    发现还是timeout,判断不是超时问题。

    后续又检查了linux的网络地址,类的序列化都没有问题。

    用一个小的不涉及查询的demo测试了下,发现可以正常访问及返回。

    说明网络地址没问题,检查了类都进行了序列化。

    考虑是调用方法中的查询操作有问题导致超时。

    于是测试查询,发送无法正常返回数据。

    初步定位问题出现在dao层。

    考虑可能是jdbc驱动版本、xml文件语句等问题。

    首先检查简单的,容易测试问题,将xml中的sql语句,直接放入Navicat运行发现正常。

    考虑可能是驱动版本等问题。

    于是先编写了一个测试案例,测试dao中需要使用的方法,发现无法正常运行。

    并且弹出too many connection提升,修改了my.ini中最大连接数。

    修改后再次运行,又弹出validateConnection false,原始druid版本为1.0.16,后来根据网上的建议换成了1.0.15版本。

    修改后再次运行,又弹出creater connection fiail jdbc.url:localhost:3306....

    考虑可能是驱动版本问题,查询以前正常项目所用jdbc版本为8.0.11,修改jdbc驱动为8.0.11

    修改对应驱动配置:jdbc.driver=com.mysql.cj.jdbc.Driver(老版本驱动无需加cj,问题项目版本jdbc驱动为5.xx.xx)

    修改后再次测试,运行正常,结果可以正常返回。

    最后测试原有项目,运行正常。

    问题原因:MySQL版本过新,较老的驱动无法正常运行,以及MySQL的一些配置问题。

    本次寻找BUG总结:

    这次寻找问题的过程中,一开始思路上就出现了问题。

    最开始试图找到和自己所遇问题一样,可以直接生搬硬套解决问题的方案。

    这种思想是不可取的,每个人所遇的问题由于平台环境等因素存在差异性。

    没有找出问题出现的原因,只是单纯的按部就班,不一定能解决问题。

    正确的做法应该是编写小的demo或测试,定位问题出在哪里,一步步缩小问题范围,然后针对性的寻找和分析问题。

    再借助搜索引擎这样才能事半功倍。

    寻找问题时应该先尝试解决容易解决的问题,如果比较同意解决的问题不是最终BUG在逐步去解决复杂的问题。

  • 相关阅读:
    es6 --- var const let
    HTTP -- 请求/响应 结构
    点击下载文件
    计算机当前时间
    js -- img 随着鼠标滚轮的变化变化
    vue --- 全局守卫
    vue -- 路由懒加载
    vuex -- 状态管理
    js对数组进行操作
    高性能网站建设
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/10819833.html
Copyright © 2011-2022 走看看