现象:最近让新来的同事熟悉公司的某个平台环境,让他自己先搭建一套先试试看,平台是基于tomcat+oracle搭建,tomcat用的是集群模式,tomcat是7.0.52版本,oracle是11g,数据和应用可以从正式环境中获取。但是最后反馈给我的问题是他搭建的tomcat启动需要十几分钟?听到我兼职不可思议,虽然说最后也能启动正常,但是从运维的角度上讲这也是极其不正常的。根据我之前的部署经验启动最多2分钟左右。下面是一张图启动的时候加载一个servlet-api.jar包的时候就将近用了4分钟,简直是忍无可忍。
他大概步骤如下:
1、安装oracle数据库
2、导出正式环境数据
3、导入测试环境数据
4、安装jdk
5、拷贝tomcat目录到测试环境
6、修改配置(主要是IP地址和数据库连接之类的)
7、启动tomcat需要十几分钟
个人排错思路:
1、仔细看步骤没啥问题,用的软件版本也一样,只有oracle主机的操作系统不一样,正式平台是5.10,测试平台的是6.7。
2、开始以为是tomcat集群的问题,关闭一个tomcat节点,去掉关于集群的配置,启动还是慢
3、根据上面这个图网上查了一下方法,说是tomcat的lib目录下的jar包和应用里面的jar包有一样的,结果删了应用下面的jar包还是一样慢
4、重新部署一个tomcat,不加载任何应用,配置文件都是默认,启动速度正常
5、把应用单独拷贝到新部署的tomcat上,启动报错,关于数据库连接之类的错误
6、将新部署的tomcat的context.xml文件配上数据库连接池,重新启动速度还是慢
7、将应用删掉,启动还是慢
8、将数据库连接池注释掉启动正常,那么现在基本定位问题就是数据库这块了
9、将数据库连接池连接公司开发环境,启动恢复正常,问题基本锁定在oracle上
10、修改了数据库连接数,查看了数据库的连接和压力、负载啥的都正常,但是启动依旧是慢
11、无奈让他重新安装数据库,因为说导入数据的时候有些报错,安装oracle的时候也出现了一些问题,但是最后还是安装完成了
问题依旧,第二天他安装oracle的时候又出现了一些问题,我让他给我重新弄了一个虚拟机,我安装了一下oracle,因为这次是用centos6.7版本安装,软件包和5.10安装会有一些不一样,比如elfutils-libelf-devel-static这个包就没有,还有pdksh也没有,另外检查的时候会提示一些i386,i686的包没有安装,我们直接忽略即可!数据库oracle11g最后也能正常安装上。导入数据会有一些报错,如下图所示:
咨询了开发后说这个错误不影响。最后数据也都导入了。
12、因为担心是他安装的数据库或者是数据有什么问题,所以我将应用连接我刚刚搭建的数据库,启动依旧很慢,基本确定了他昨天的数据库也没啥问题,是不是系统哪配置的不对?我用netstat看到了一条记录引起了我的注意,如下图所示:
启动应用的时候数据库怎么还和DNS通信?
结果我一看resolv.conf里面写了我们内网的DNS服务器地址,下面是联通的DNS地址,但是192.168.9网段和168网段是不通信的。
最后注释掉DNS,重启启动tomcat服务,终于正常启动了,时间在2分钟左右
总结:
他这个问题是因为执行了我写的系统初始化脚本,里面写了IDC相关的配置导致,而且这个问题我以前好像遇到过,就是一台开发测试的数据库一直都正常,有一次批量改过DNS配置,隔几天后重启应用很慢很慢,当时虽然解决了,但是没做记录,时间太久也忘记了,这次特意记录一下,也给网上遇到这样问题的朋友一些参考。另外数据库服务器一般都只配置内网IP地址,也不需要上网啥的,所以DNS一定不填写即可!
他大概步骤如下:
1、安装oracle数据库
2、导出正式环境数据
3、导入测试环境数据
4、安装jdk
5、拷贝tomcat目录到测试环境
6、修改配置(主要是IP地址和数据库连接之类的)
7、启动tomcat需要十几分钟
个人排错思路:
1、仔细看步骤没啥问题,用的软件版本也一样,只有oracle主机的操作系统不一样,正式平台是5.10,测试平台的是6.7。
2、开始以为是tomcat集群的问题,关闭一个tomcat节点,去掉关于集群的配置,启动还是慢
3、根据上面这个图网上查了一下方法,说是tomcat的lib目录下的jar包和应用里面的jar包有一样的,结果删了应用下面的jar包还是一样慢
4、重新部署一个tomcat,不加载任何应用,配置文件都是默认,启动速度正常
5、把应用单独拷贝到新部署的tomcat上,启动报错,关于数据库连接之类的错误
6、将新部署的tomcat的context.xml文件配上数据库连接池,重新启动速度还是慢
7、将应用删掉,启动还是慢
8、将数据库连接池注释掉启动正常,那么现在基本定位问题就是数据库这块了
9、将数据库连接池连接公司开发环境,启动恢复正常,问题基本锁定在oracle上
10、修改了数据库连接数,查看了数据库的连接和压力、负载啥的都正常,但是启动依旧是慢
11、无奈让他重新安装数据库,因为说导入数据的时候有些报错,安装oracle的时候也出现了一些问题,但是最后还是安装完成了
问题依旧,第二天他安装oracle的时候又出现了一些问题,我让他给我重新弄了一个虚拟机,我安装了一下oracle,因为这次是用centos6.7版本安装,软件包和5.10安装会有一些不一样,比如elfutils-libelf-devel-static这个包就没有,还有pdksh也没有,另外检查的时候会提示一些i386,i686的包没有安装,我们直接忽略即可!数据库oracle11g最后也能正常安装上。导入数据会有一些报错,如下图所示:
咨询了开发后说这个错误不影响。最后数据也都导入了。
12、因为担心是他安装的数据库或者是数据有什么问题,所以我将应用连接我刚刚搭建的数据库,启动依旧很慢,基本确定了他昨天的数据库也没啥问题,是不是系统哪配置的不对?我用netstat看到了一条记录引起了我的注意,如下图所示:
启动应用的时候数据库怎么还和DNS通信?
结果我一看resolv.conf里面写了我们内网的DNS服务器地址,下面是联通的DNS地址,但是192.168.9网段和168网段是不通信的。
最后注释掉DNS,重启启动tomcat服务,终于正常启动了,时间在2分钟左右
总结:
他这个问题是因为执行了我写的系统初始化脚本,里面写了IDC相关的配置导致,而且这个问题我以前好像遇到过,就是一台开发测试的数据库一直都正常,有一次批量改过DNS配置,隔几天后重启应用很慢很慢,当时虽然解决了,但是没做记录,时间太久也忘记了,这次特意记录一下,也给网上遇到这样问题的朋友一些参考。另外数据库服务器一般都只配置内网IP地址,也不需要上网啥的,所以DNS一定不填写即可!