不知道普元的EOS属于哪个分类,直接放在综合类里面了。

有个项目,使用EOS5.x开发的,部署在互联网上,每年都会周期性的接受大批量人访问。

今年只是做了一些不大的调整,结果往年没有出错的应用,今年过不了多久就会报内存溢出错误。

严重的时候,几分钟就要重启一下应用服务器,否则大家都没法访问。

刚开始的时候,认为改动的部分是引起错误的主因。查看EOS的日志,观察其可用内存大幅下降

的地方,有很多业务逻辑都在这个时候调用,并没有发现很有价值的内容。但是其中一个有大量的

文档生成并提供下载的地方,引起了我们的注意,认为可能是这些文档一直在内存当中,只有等用

户下载完之后才会释放。后来将这部分代码改成生成临时文件提供下载,问题依然没有得到解决。

于是还是决定冷静下来,使用 EOS5 提供的性能分析工具,将 userAccessMonitor.log 下载下来,

使用分析工具,查看最近一次刚内存溢出期间的状况,首先看一下内存变化情况:

在 17:23之前,一直很平稳,系统分配的内存一直是512M,可用内存也没有

明显变化。但是在17:24左右,突然开始有个占用内存陡升的过程,然后在 17:34,

终于由于内存溢出无法工作而被重启了。

从这个过程可以看出,应该是某一个请求,导致内存的持续增长,直至没有可用内存

可供分配,那么这个请求动作,一定是未完成的动作。因此,通过未执行完的请求,可以看出如下

这两个动作:

这两个请求发生时,可用内存还有480多M,属于正常范围。这两个请求发生之后,其他的未完成请求,都属于

由于强行中断应用服务器导致的,可以忽略。因此,重点就放在这两个请求上。

查看代码后发现,这两个请求,都会去查询数据库的某一张表。通常这个查询都是带查询条件和范围限制的,

但是在某个非常特定的情况下,会导致查询条件和范围都没有传递进去,因此程序会试图将整个数据库装载

进内存,从而导致内存溢出。

找到问题原因,再解决就非常容易,找到相应的代码,如果没有传入条件和范围就抛错,done.

EOS5 之 内存溢出问题的解决相关推荐

  1. 开发中内存溢出问题及解决

    开发中内存溢出问题及解决 参考文章: (1)开发中内存溢出问题及解决 (2)https://www.cnblogs.com/yangyi1024/p/6417874.html 备忘一下.

  2. Spark Shuffle 堆外内存溢出问题与解决(Shuffle通信原理)

    Spark Shuffle 堆外内存溢出问题与解决(Shuffle通信原理) 参考文章: (1)Spark Shuffle 堆外内存溢出问题与解决(Shuffle通信原理) (2)https://ww ...

  3. jmeter(二十二)内存溢出原因及解决方法

    jmeter(二十二)内存溢出原因及解决方法 参考文章: (1)jmeter(二十二)内存溢出原因及解决方法 (2)https://www.cnblogs.com/imyalost/p/7901064 ...

  4. springboot上传大文件时内存溢出的可能解决办法

    springboot上传大文件时内存溢出的可能解决办法 在springboot中上传大文件时要考虑内存的情况,一般我们会通过在执行服务时加入-Xms512m -Xmx512m等参数加大堆内存,但这是指 ...

  5. java内存溢出的情况解决方法

    内存溢出虽然很棘手,但也有相应的解决办法,可以按照从易到难,一步步的解决. 第一步,就是修改JVM启动参数,直接增加内存.这一点看上去似乎很简单,但很容易被忽略.JVM默认可以使用的内存为64M,To ...

  6. jenkins内存溢出的一些解决过程

    公司内网测试jenkins服务器,最近总是出现PermGen space(内存溢出)的问题,解决过程记录如下 1.重启jenkins查看日志: 3, 2017 10:54:54 udson.Exten ...

  7. C#程序出现内存溢出错误的解决办法

    上周一个C#开发的站点出现了内存溢出错误:"引发类型为"System.OutOfMemoryException"的异常" 因为页面众多一时最初难以确定问题源,找 ...

  8. 瑞萨RL78系列单片机报内存溢出故障的解决过程。RA78K0R error E3206: Segment ‘@@CODEL‘ can‘t allocate to memory - ignored

    最近开始使用瑞萨的R7F0C908芯片,ROM48K,对于目前的项目肯定是足够了,虽知道代码完成后,编译出现这个故障:RA78K0R error E3206: Segment '@@CODEL' ca ...

  9. Java内存溢出场景及解决办法

    Java内存溢出即程序在申请内存时,没有足够的空间供其使用,出现out of memory.常见于四种情况:栈溢出(StackOverflowError).堆溢出(OutOfMemoryError:j ...

最新文章

  1. MongoDB给数据库创建用户
  2. 一个小时内学习SQLite数据库
  3. C语言判断一个数是否是回文数Palindrome算法(附完整源码)
  4. CSS之calc()使用
  5. Springboot中几个层的功能总结
  6. 2011年至2019年制造的 AMD 处理器均易受两种新型攻击
  7. TimeUnit类中的sleep() 和Thread.sleep()
  8. oracle 外部os授权,外部OS认证的过程
  9. matlab如何获得数组有多少数,请问MATLAB里有得到一个数组中相同数有多少个的函数么?...
  10. 裸看美剧必备英文词汇
  11. CF1428 G1,G2 . Lucky Numbers题解
  12. FrameExit:Conditional Early Exiting for Efficient Video Recognition
  13. 其实装修也是工程管理
  14. 详解Minimax算法与α-β剪枝
  15. 数据结构课程设计——通讯录管理系统
  16. 贴几行汉语编程的代码
  17. KEIL,MDK,STM32
  18. Redis源代码分析(十一年)--- memtest内存测试
  19. 计算机毕业设计Java进出货管理系统(源码+系统+mysql数据库+lw文档)
  20. Matlab的rand函数以及randi函数使用

热门文章

  1. 跪求下方支付宝生活号收款码代码或者方法
  2. NIL、NIL、NULL和NSNULL区别
  3. chrome主动同步书签
  4. Phantom Problem(幻读)问题
  5. Ubuntu 16.04 LTS 完美安装QQ
  6. Python入门学习P26~P30
  7. 用向量实现银行客户管理系统
  8. javaScript定时器函数
  9. pyhon webbrowser 自动打开浏览器
  10. Linux vi/vim文本编辑器技巧, vim多窗口使用技巧