dubbo 启动时会出现多个IP
注册中心配置的地址是127.0.0.1,但会出现另外一个ip
ping这个ip是ping通,但问网管却没有这个ip
然后通过ifconfig -a|grep {这个IP} 就出现在vmnetwork里,
这证明是虚拟机网卡ip
dubbo启动订阅服务或暴露服务特别慢
dubbo注册中心默认缓存文件会上锁
当多个provider使用同一个注册中心同时启动时会出现缓存文件上锁,导致不能正常启动,
默认是从 ~/.dubbo/ 目录下一个文件作为缓存文件,
需要为不同的provider 配置缓存文件位置,即:
<pre>
<dubbo:registry file="XXX" />
</pre>
dubbo telnet 调试
登录到指定的provider
<pre>
telnet {provider所在ip} {provider的暴露端口}
e.g: telnet 127.0.0.1 2206
</pre>
查看当前provider的服务
<pre>
ls
</pre>
查看指定服务的所有方法
<pre>
ls xxxService
</pre>
调用方法(具体怎么调用在查一下)
<pre>
invoke xxxService xxxx
</pre>
dubbo-admin 查看服务报404错误
原因是服务分组名称使用了ip地址作为分组名称,改为非ip地址就可以了,或者换个分组名称。
dubbo启动时非常慢
下面是在网上找到的其中一个描述
Zookeeper连接速度很慢,Dubbo初始化很慢,应用启动很慢的问题
发现线下环境迁移到新机器后,应用启动变得很慢,本来十几秒启动的应用,变成几分钟才能启动。
启动过程没有报错,只是Dubbo的注册信息日志一直在比较慢地刷。
开始怀疑是网络问题,但是检查了iptables没有开启,用iptraf查看流量,也不高。机器的空闲内存也足够。
再检查Zookeeper的配置,磁盘的空间,应用的dubbo配置,jvm配置,发现都没有问题。
没办法了,用jprofiler来测试下,发现“org.I0Itec.zkclient.ZkClient$1.call”,这个调用耗时比较大。
这样确认是zookeeper本身比较慢,不是应用的问题。
用下面的zookeeper benchmark工具测试了下性能,发现read速度还可能,create/write速度非常慢,qps只有个位数。
于是问了下运维的同事,原来新机器是用共享磁盘的,所以速度很慢。
而zookeeper每次write请求都要写到log日志,并刷到磁盘里,所以非常的慢。
后来运维的同事换为本地磁盘,一切恢复正常。
http://blog.csdn.net/hengyunabc/article/details/19006911
而我发现的解决方法是:
如果是本地开发机器的话,那要把 源代码项目 切换一下其他目录,重新把源代码check out 下来,重新编译,最后运行就可以了,不知道是为什么
如果这种方法不行,那换个zookeeper服务。
我这里用的是idea + maven 来调试的,有时候idea 启动dubbo服务的时候突然变得很慢,也是不知道为什么,可能跟idea 启动时的参数有关系,cd 到服务主程序jar目录,并通过java -jar 的方式来运行 跟idea运行 的jar文件的话,又很快。。。所以后来重新导入一下项目,又可以了,估计是有一些文件可能生成了以后没有清除掉。
另外还发现一个问题,突然变慢可能跟 debug 跟run 模式有关系,使用debug模式要30分钟才能启动好,用run模式就跟普通 java -jar模式运行差不多。
而且当我用run模式跑了以后,再切换debug模式并且把所有断点清除掉,就恢复正常了。
原来还以为是zookeeper有问题,在zookeeper发现日志:
Got user-level KeeperException when processing sessionid:0x15eadf1e4610001 type:create cxid:0x4fb zxid:0x6ba txntype:-1 reqpath:n/a Error Path:/dubbo Error:KeeperErrorCode = NodeExists for /dubbo
结果发现不是.........
找到了官方github 方法:
https://github.com/alibaba/dubbo/issues/885