之前做的一个外包今天来找我说,文件上传失败,但是其他接口能正常运行。
我调用上传接口的时候,发现接口报错500,如下图
NGINX出问题了?
既然是nginx返回的报错,那么第一反应,是不是nginx挂了,但是一联想他说其他接口能正常运行,也不像是nginx挂了的现象。 不管了,先去查询nginx的日志看看。
但是翻查了access.log,发现停留在上午10点就没有后续日志了,而翻查error.log也没看到有效信息。这是怎么回事,怎么除了上传接口其余都能正常访问,但是access.log却停留在上午没有后续的日志信息了。
找到元凶-磁盘占满
既然日志不能正常打印了,是不是磁盘占满了。
一查看,发现果然,磁盘都被占满了,导致了nginx在上传文件时,无法为文件留出足够的缓冲区,使得文件上传失败,但是接口访问却不受影响。
解决问题
首先进入/
路径下,一步步通过du -sh *
, 定位到占磁盘空间最大的文件,最终定位到了是因为最近正式环境用户访问量上来了,导致日志剧增,而日志存放时间过长。
解决步骤:先把较为久远的日志文件删除了,后续修改log-back的配置,将日志存放天数修改的稍短,解决了这次的问题。
反思
- 这个项目是电商项目,最近三八妇女节流量较大,原先的日志量在近半个月翻了好几番,对于用户访问量没有做好预估,导致日志增多占满了磁盘。后续对于这种用户访问波动性较大的项目,需要更多思考服务器峰值配置是否吃得消。
- 由于这个是外包项目,云端机器是由客户提供的,磁盘大小客观上也比较小。对于这种机器配置本身较差的,需要经常查看服务器的性能状况,比如cpu内存和磁盘,尽早发现问题的苗头