因为仓库订单拦截需要,前两个星期配置了一个24h不断监测的应用,单独开了一台100g硬盘8g内存的虚拟机来跑,一共只开了三个软件:钉钉/一张excel表/一个google网页;这两天突然发现8g的内存占用率已经到了97%,重启之后内存占用率还是很高,而且占用率涨的很快.
应用的主要内容就是不断获取钉钉订单群里最后一条订单,然后和excel表里记录下来的处理过的订单比较,如果是新的就开始一系列处理.根据我自己的推测,以下两种应用纠错机制可能对内存占用产生较大影响:
1.钉钉反复重启:一开始部署应用的时候以为钉钉一直挂着没有什么问题,后来发现不知道是因为钉钉本身的设置还是因为别的原因,挂了一天之后钉钉就会自动退出;于是我增加了'检测钉钉不在线就重启'模块,考虑到检测只是检测有没有叫'钉钉'的窗口,若没有,就从文件路径中启动钉钉,而并非在后台程序中检测钉钉是否在运行,这种情况下,可能钉钉窗口退出而后台某些钉钉程序还在运行,此时再重启钉钉可能造成程序重复运行,长此以往,堆积了两周可能导致内存占用率上升.
2.影刀任务堆积:考虑到仓库拦截订单需要的实时性,我将应用设置为逢(:00:00/:05:00/:10:00/:15:00/:20:00/:25:00/:30:00/:35:00/:40:00/:45:00/:50:00/:55:00)这些时间点就会停止运行,而应用是每五分钟重启一次,有时候应用在运行时抓取时间可能会差1-2s,所以错过了*:05:00,而抓取到了*:05:01,这个时候上一个应该停止的应用没有停止继续运行,而应该开始的下一个应用就堆积起来了,这个思路本身是没有问题的,它可以保证任何时候都有应用在实时监测不会出现某个时间段中断的情况,虽然影刀后台可以看到堆积了超过三个任务时就会自动取消,但是我还是猜测堆积任务会对内存占用率有影响.
有没有大神指教一下这种实时监测的应用比较好的解决思路,或者这种内存占用率超高的情况有没有啥解决办法!!
加个配图:

