Dubbo服务启动慢问题排查与解决:优化DNS配置提升性能
创始人
2024-12-16 23:07:38
0 次浏览
0 评论
What?一个Dubbo服务启动要两个小时!
在前导码测试环境中;我遇到了一个问题,Dubbo服务启动异常。过程显示,应用首次启动时速度非常慢,大约需要两个小时才能正常运行。
测试人员数据库;尝试解决Zookeeper的其他连接问题,但找不到原因。
最后,通过jstack工具获取线程快照后;具体来说,ServiceConfig.java中的303行代码发现Dubbo服务配置以某种方式卡在了主线程中。
根据源码分析进行深入分析;问题的根本原因是试图获取本地IP并注册到Zookeeper进行服务调用。
当执行Inet4AddressImpl.getLocalHostName方法时;这是默认方法,并且发现调用花费了异常长的时间。
经过测试,我们发现本地主机名与IP的交互过程存在滞后,与DNS服务器的交互速度明显变慢。
解决了策略分析问题后,考虑到这是一个原生方法,与核心应用逻辑无关。
很难确定问题是否源于服务器配置。
通过ping服务器的主机名和IP;获取主机名存在延迟;导致整个系统启动缓慢。
为了解决这个问题,我尝试在/etc/hosts配置文件中添加主机名和IP之间的映射;从而直接ping主机名响应速度快,解决了Dubbo服务启动慢的问题。
总结与反思解决这个问题后,我们总结了以下几个要点:第一,DNS服务器的交互速度对应用程序的启动时间影响很大,应关注其响应速度。
第二,Dubbo在依赖外包时应该提高其健壮性。
例如,当资源长时间不可用时;您可以提供异常或者更清晰的错误信息,帮助开发者快速发现问题。
通过这次经验我们认识到,优化DNS配置、提高外部依赖处理逻辑的性能对于提高系统稳定性至关重要。
zookeeper事务日志在哪儿
准备工作1、每台机器都要配置vim/etc/sysconfig/networkNETWORKING=yesHOSTNAME=hadoop-server。12.更改IP/etc/sysconfig/network-scripts/ifcfg-eth03。
主机名和IP之间vim/etc/hosts192.168.146.181hadoop-server1192.168.146.182hadoop服务器2192.168.146.183hadoop服务器3192.168.146.184hadoop服务器4192.168.146.185hadoop-server5######注意######如果你的公司租用服务器或者使用云主机(华为主机、阿里云主机等),那么/etc/hosts中做什么呢?您的内网IP地址和主机名。
映射关系4.关闭防火墙#显示防火墙状态serviceiptablesstatus#关闭防火墙serviceiptablesstop#显示防火墙启动状态chkconfigiptables--list#关闭防火墙启动chkconfigiptablesoff前四步使用root用户,然后重启机器。
操作5.ssh不需要登录hadoop生成两个文件:id_rsa.pub(密钥)和id_rsa.pub(公钥)。
将公钥复制到您要记录的目标。
在您的计算机上运行ssh-copy-。
idhadoop-server26.安装JDK、配置环境变量等root用户操作vim/etc/proflieexportJAVA_HOME=/usr/java/jdk1.7.0_65exportHADOOP_HOME=/itcast/hadoop-2.4.1exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbinsource/etc/profile集群规划:主机名IP安装软件运行进程hadoop-server1192.168.146.181:jdk,hadoop名称节点资源manageDFSZKFailoverController(zkfc)hadoop-server2192.168.146.182:jdk,hadoopnamenoderesourcemanageDFSZKFailoverController(zkfc)hadoop-server3192.168.146.183:jdk,hadoop,zookeeperdatanodenodemanagejournalnodeQuorumPeerMainhadoop-server4192.168.146.184:jdk,hadoop,zookeeperdatanodenodemanagejournalnodeQuorumPeerMainhadoop-server5192.168.146.185:jdk,hadoop,zookeeperdatanodenodemanagejournalnodeQuorumPeerMain安装说明:1、安装并配置zookeeper集群(在hadoop-server3上)1.1tar-zxvfzookeeper-3.4.5.tar.gz-C/home/hadoop/app/1.2修改配置cd/home/hadoop/app/zookeeper-3.4.5/conf/cpzoo_sample.cfgzoo.cfgvimzoo。
cfg更改:dataDir=/home/hadoop/app/zookeeper-3.4.5/data最后添加:server.1=hadoop-server3:2888:3888server.2=hadoop-server4:2888:3888server.3=hadoop-server5:2888:3888保存退出并创建tmp文件夹mkdir/home/hadoop/a。
pp/zookeeper-3.4.5/data创建一个空文件touch/home/hadoop/app/zookeeper-3.4.5/data/myid,最后创建IDecho1>/home/hadoop/app/zookeeper-3.4作为文件写入。
/data/myid1.3将配置好的Zookeeper复制到其他节点scp-r/home/hadoop/app/zookeeper-3.4.5/weekend06:/home/hadoop/app/scp-r/home/hadoop/app/zookeeper-3.4.5/weekend07:/home/hadoop/app/注意:hadoop-server4、hadoop-server5更改/home/hadoop/app/zookeeper-3.4.5/data/myid内容对应的部分hadoop-server4:echo2>/home/hadoop/app/zookeeper-3.4.5/data/myidhadoop-server5:echo3>/home/hadoop/app/zookeeper-3.4.5/data/myid2(在Hadoop中)安装并配置Hadoop集群。
-server1(如上操作)2.1解压tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/2.2。
配置HDFS(hadoop2.0的所有配置文件位于$HADOOP_HOME/etc/hadoop在环境变量中添加#hadoopvim/etc/profileexportJAVA_HOME=/hadoop/home/app/jdk1.7.0_55exportHADOOP_HOME=/home/hadoop/app/hadoop-2.4.1exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin#hadoop2.0所有配置文件都是位于$HADOOP_HOME/etc/hadoopcd/home/hadoop/app/hadoop-2.4.1/etc/hadoop2.2.1更改hadoo-env.shexportJAVA_HOME=/home/hadoop/app/jdk1.7.0_552.2.2更改核心-site.xml<配置><!--hdfs名称服务指定为ns1-->
这应该与core-site.xml中的名称服务匹配-->
ns1.nn1
自动-failover.enabled
provider.ns1
多个机制由换行符分隔。
即每种机制暂时使用一行-->
ha.rm-ids
zk-address
相关文章
Java环境变量配置指南:解决Java运...
2024-12-14 16:20:58Java编程从入门到精通:精选教材推荐与...
2024-12-16 05:46:02Java培训:四个月速成可能吗?专家教你...
2024-12-14 15:19:47Java数组转List全攻略:asLis...
2024-12-16 19:53:40、<br>JavaBus新入...
2024-12-21 01:33:12Java MVC架构核心:深度解析DAO...
2024-12-21 14:24:38C语言实现三位数反转输出教程
2024-12-16 11:47:12Python编程:实现1到100求和、计...
2024-12-17 02:26:31Java培训时长及费用解析:全面了解你的...
2024-12-15 02:30:06Java字符串内存使用解析:计算与优化指...
2024-12-18 01:52:41最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
SQL多表连接查询全解析:JOIN语句应...
sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...
2
Java中字符串类型详解:String与...
变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...
3
JavaSE与JavaEE:从基础到企业...
javase 和javaee的区别?JavaSE和JavaEE...
4
Java程序员面试必知:核心技术问答与技...
java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...
5
Java.exe与Javaw.exe:区...
程序中java和javaw有什么区别java和javaw的区别:两者都是Java...
6
深入解析:Java中的javax包及其与...
JAVA导入时,什么是javax?awt是java1.0,swing是java2...
7
Java去除字符串前空格:常见方法与技巧...
JAVA怎么【只】去掉字符串【前面的】空格?JAVA中是否去除空格1.Strin...
8
北京Java/C++程序员薪资揭秘:云计...
一本211大学4年工作经验java程序员/C++程序员现在北京能...
9
命令行运行Java:从编写到执行全攻略
怎么在命令行下运行java?以下是使用记事本运行Java程序的步骤:编写Java...
10
Java字符串处理与键盘输入、文件读取技...
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个strAdd函...