最近很多政府项目都在提倡国产化,因此需要将原有的项目移植到linux话环境中,我的一个项目在移植过程中就遇到了问题,该项目在windows环境中运行正常,启动速度一般在25-30秒内,但是移植到linux环境中启动就需要200-250秒,运行效率下降了10倍,而且在保存数据时也出现了这种问题,保存一条数据需要60-80秒。系统运行又不报任何错误。后面经过仔细追踪发现JEECG框架中我们会对所有的数据操作保存一条日志,而保存日志时会获取本机IP地址。所有的运行缓慢的问题就在于获取本机IP上。
问题的原因:
在JEECG中有一个获取本机IP的方法代码如下:
public static String getIp() {
String ip = null;
try {
InetAddress address = InetAddress.getLocalHost();
ip = address.getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return ip;
}
而在linux中如果没有配置本机指向的IP地址时,程序就会卡在下面这句代码上,这就时整个项目运行缓慢的问题所在。
InetAddress address = InetAddress.getLocalHost();
找到问题所在,解决起来就简单多了。
解决办法:
在linux中先用 hostname 命令查看本机的机器名,如下图
[root@taas--1585213607486-z00488725-0 vission]# hostname
taas--1585213607486-z00488725-0.novalocal
然后用 vi 命令修改/etc/hosts 文件给本机绑定一个IP地址,如下样例中的
172.27.104.179 taas--1585213607486-z00488725-0.novalocal
这样问题就得到了完美的解决了
[root@taas--1585213607486-z00488725-0 tomcat8.5]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.27.104.179 taas--1585213607486-z00488725-0.novalocal
重启tomcat 速度恢复到跟windows环境中一样了。