1.2017-12-21 所遇场景:在作百度识别的时候 百度文字识别 在测试环境没有问题的代码部署到线上就出了问题,当时遇到的问题是java
/** * 以字节流的方式读取图片 * [@param](https://my.oschina.net/u/2303379) path 图片路径 * [@return](https://my.oschina.net/u/556800) 图片字节流 * [@throws](https://my.oschina.net/throws) IOException * 时间 2017年12月12日 下午4:38:07 * [@author](https://my.oschina.net/arthor) sunjg * [@throws](https://my.oschina.net/throws) URISyntaxException */ private static byte[] readImageFile(String path) throws IOException, URISyntaxException { String str = java.net.URLDecoder.decode(path, "UTF-8"); URL uri = new URL(str); URLConnection connection =uri.openConnection(); InputStream inputStream =connection.getInputStream(); ByteArrayOutputStream outp = new ByteArrayOutputStream(); int ch = 0; while ((ch = inputStream.read()) != -1) outp.write(ch); byte[] b = outp.toByteArray(); return b; }
线上读取字节流文件的时候耗时太长,这个问题让咱们很是苦恼,由于如今是上线时间,时间紧迫否则会形成延期。 所作的措施一:让运维在线上(online)环境上从新部署一下服务,咱们猜测多是由于代码没有提交完整,结果错误依旧,让然没有解决这个问题 所作的措施二:将代码中的异常处理都去除,将详细的堆栈信息都打印出来,根据日志信息进行处理问题,结果浏览器页面仍是会出现504,请求超时问题 所作的措施三:curl -I http://res.shoumeiapp.com/1510816149445about_icon_more.png线上某个图片地址 所得到信息以下图:linux
所作的措施四:在网上查了相关资料,而且问过技术总监,最终肯定该问题属于DNS域名解析错误, 查了一下测试环境的DNS域名解析,结果为: DNS服务器地址配置 在Linux下面,有一个默认的DNS服务器地址配置文件的设置,存放在 /etc/resolv.conf
浏览器
继续查找线上的该配置文件,结果以下: 服务器
将114.114.114.114配置到线上环境,结果一切正常了,该问题通过一波三折才解决了。app