生产环境配置文件有多余符号导致服务报错的排查过程,notepad++真的YYDS

有一天,测试同学跟我反应测试的时候有个接口一直报错,于是我去看了一下服务器日志,发现了以下报错信息

报错信息

相信大家都很熟悉这个报错,就是简单的字符串转Integer失败。因为这里的配置是获取的zookeeper的地址,然后截取zookeeper配置的端口并转换成Intege因此我本能的想到是zookeeper的配置问题,我便去查看了一下Jar包启动的环境变量,如下

配置文件

发现这个配置似乎没有问题,然后我在想是不是有空格之类的情况,于是我把配置文件中的地址复制出来,在本地跑了一下,没有报错,再一想如果zooKeeper的配置文件有问题应该项目也启动不起来。但是我看了一下上面的报错再仔细研究一下,发现2181的左边有引号,但是右边没有,当时猜测是读取的时候多读了左边的那个引号,但是配置文件中没有引号,便觉得很奇怪,于是在本地测试了一下,代码如下

    public static void main(String[] args) {
        System.out.println(Integer.parseInt("\"2181"));
    }

输出的结果如下:

本地测试报错信息

我发现如果是左边多了引号,那打印的结果就会是三个引号,而不是一个,于是感觉不是这个问题。后面测试了很多次,想了很多情况,在测试或本地测试了很多次,似乎地址都没有问题。百思不得其解的情况下,后来和同事一起发现打印日志的格式似乎不对,如下

tail -f 时日志的格式不对

于是决定不用tail -f命令查看,将日志文件拷下来在notepad++里面查看。终于发现了不对的地方。

notepad++打开日志
原来不是2181左边多了一个引号,而是后面多了一个回车,导致后面的引号到了第二行,而tail -f命令打印的格式有问题,误导了我。

有了思路之后,问题就清晰了很多,而zookeeper的配置信息就在的配置文件里面,我使用cat命令看这个文件似乎并没有回车,然后我又使用vi命令,一直按左键,到最后也没有发现换行。当时觉得很奇怪,于是决定再次将文件拷下来使用notepad++打开。果然。问题出现了。

notepad++打开config

可以看到,在notepad++里面,这个文件是有三行的,第三行是空的,这意味着在RUN_ARGS后面有一个回车,不过我想这个回车在指定RUN_ARGS的引号后面,按理说应该不会对RUN_ARGS产生影响,不过感觉或许真的是这里的问题,于是将最后的回车删除掉再上传到服务器上,重启服务后,接口恢复正常。

总结:

虽然觉得很奇怪,不明白为什么引号外面的回车会对整个参数产生影响,不过问题总算是找到了,这里学习到两点

  1. 在配置文件里一定要注意有没有一些多余的符号,比如回车、空格等。
  2. notepad++ 简直YYDS,以后在tail -fcatvi等命令均没有得出答案时,不妨拷下来放到notepad++中,或许能找到答案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值