公司同事反映公司软件特别卡,查询几百行的数据软件经常反应半天才反应过来,更多的时候是直接报错,错得也很明显,那就是内存溢出!刚开始得知这个事情的时候,公司的程序员老赵还特地跑到同事电脑上看了看,结果说同事电脑内存不够用了,然后就没管了。但是,接下来几天,其他同事也说他们也有同样情况,这让我觉得问题不那么简单!

打开网易新闻 查看精彩图片

我一开始也以为是同事电脑内存比较低导致的,这得说下我们公司的电脑是什么情况!

我们公司老板以前是在电脑城卖电脑的,在购买电脑这块颇有心得,至少他是这么说的!

所以,我们公司除研发人员的电脑是根据需求配置的以外,其他同事的电脑都是老板通过电脑城朋友那拿过来的二手货!主机加显示器以及像键盘和鼠标这样的配件,打包下来总共不要2000块钱一套!公司里面所有非研发人员的电脑都是这个货色。

所以,公司的程序员老赵在听说公司软件报内存溢出这个错后,并没有细查就说同事电脑内存不够!但这也不能怪老赵,因为就那么凑巧,因为电脑配置比较垃圾,同事的电脑的确内存不够了!

但是,你要说一个同事电脑是这样也就算了,如果所有同事电脑都这样,那这其中肯定有猫腻!

老赵其实不算是一个心思缜密的人,他一般只解决眼前问题,他的想法就是:“眼下问题解决就行,你别打扰我敲代码!”

当我意识到事情不简单以后,我也在自己电脑上按照其他同事的操作又操作了一遍软件,发现并没有出现卡的现象,也没报内存溢出!

因为研发人员使用的是测试环境,所以,我想是不是测试环境重现不了这个问题,于是乎,我将软件所有配置都改成了正式环境的参数去测试。

果不其然,我电脑上的软件也报了内存溢出这个错误!

要知道,我电脑的内存可是16G,如果16G内存的电脑使用我们的软件都能报内存溢出,那至少说明了我们软件在设计上就不合理!

为了查清内存溢出的真相,我开始了调试,很快调试结果就出来了!

我发现,报内存溢出的并不是软件客户端所在的电脑,而是服务器!软件只是将服务器错误原封不动的显示在前端了而已!也就是说,其实我的电脑内存并未溢出,实际上内存溢出的是服务器!

于是,我登录进了服务器,一看任务管理器,果然内存已经飙满了!

内存飙满,会导致软件在查询数据库的时候因为数据量太大导致内存不够用,从而报内存溢出错误!

原因知道了,我就得查导致服务器内存溢出的原因!通过分析,我发现导致服务器内存溢出的竟然是一个.txt的文本文件!

我“顺着网线”就找到了这个.txt文件所在目录,发现它竟然在我们软件服务器端的根目录的Log文件夹下!

原来,这个.txt文件是个日志文件!

一个日志文件怎么会那么大呢?刚开始我还没反应过来,于是就想双击打开这个文件,看看里面到底有什么,结果双击后,整个文件夹都“假死”了!

之后,我不得不重启了文件管理器,右键查看了轩这个.txt文件的大小,竟然发现有十几G!

我的天,这个.txt文件怎么会那么大?

我当时就立马反应了过来,一看Log文件夹除了这个文件以外没有其他文件,我就知道发生了什么事!

很简单,那就是我们软件服务端的所有日志都写在了这一个.txt文件中!

打开网易新闻 查看精彩图片

此时,我找到了老赵,因为服务端的日志模块当初我记得是老赵负责的,而老赵是个有二十几年编程经验的老程序员了,我没想到他会这么干!

我旁敲侧击地告诉老赵,说他所有日志都写在一个.txt文件中,随着时间越来越久,服务器内存会被撑爆的,因为我们服务器端写日志还是挺频繁的!

老赵听我这么说,意识到了问题所在,我以为老赵会去改服务端日志读写的代码,将日志文件按照以天为单位存储。

结果您猜怎么着?老赵反一个删除,就把那个十几G的.txt文件给删了!然后办公区喊了一句:“大家再试试,看看卡不卡了!”

随后,老赵笑呵呵得跟我说:“估计他们不卡了!”

我以为老赵只是临时这么干,于是就跟老赵说:“这也算暂时解决了问题吧!”

结果老赵接下来一句话,让我意识到老赵似乎并没有改代码的意愿!

老赵跟我说:“以后每隔几天就登录服务器看看,然后把日志文件删了,不然下次还会卡!”

我惊讶地问:“你这不改啊?”

老赵无所谓地说:“这改啥,就这么跑呗!”

结语

老赵说得轻描淡写的,感觉他也不是说着玩的,就是不准备改,我虽然没看日志读写的代码,但我感觉盖起来也不会麻烦到哪去!

最后,我只能尴尬地走开了!我不知道老赵此举到底是为了什么,是真的没有责任心,还是觉得我多管闲事,给他添麻烦了?如果真是这样,我可就真无话可说了!如果是觉得我多管闲事,放着这么明显的问题不管,那就真的有点说不过去了!