springcloud问题解析一

工作总结技术笔记

springcloud问题解析一

我们基于springcloud-alibaba搭建了数据中心的微服务,使用统一认证保证所有应用全局使用一套用户,对不同的产品的相同业务属性进行抽取,形成了10左右的微服务节点。

问题描述:项目运营的同事发现,公众号一个上传环保报告的功能不稳定,时不时上传失败,前端报no space left,一般在上午上传成功,下午就上传失败,负责的后端开发人员排查后找不到原因,无法解决。

处理过程:

💡
1.no space left 问题原因是服务器磁盘满了,分为两种情况,磁盘空间和磁盘的文件句柄都可能造成此问题,进入服务器分别使用df -h,df -i查看占比,发现正常
💡
2.查看对应接口的逻辑代码,springboot上传文件依托于Tomcat,会在一个目录创建临时文件保存,此目录可配置。怀疑是目录无写入权限或者此目录定义了大小限制,最后均无问题,中途发现流未做关闭的操作,进行代码优化。
💡
3.把此接口单独抽出,打包为demo.jar,用POSTMAN测试上传,成功
💡
4.发现报错时并未进入到方法里,查看接口的链路发现,微服务在提供调用前会使用定制的firewall微服务进行安全过滤,而firewall部署的服务器是其他服务器,登录查看服务器,发现磁盘空间满,此台服务器做了磁盘监控,但是服务器因为端口问题未发出磁盘告警。最后释放磁盘空间解决问题,并编写定期清理日志的脚本,修复磁盘未告警的问题

总结:

微服务不断增加,对问题排查和运维带来困难,需要采取更主动的方式,更快的发现问题,后续逐步引入skywalking进行分布式链路追踪。