`
wangleide414
  • 浏览: 592383 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

生成报表内存溢出问题

 
阅读更多
 
      最近常在系统中发现内存不够用的情况,这里简单总结下对应场景和处理思路

背景:线上很多客户生成报表失败,由于采用是celery和异步方案,事后只能去查查日志,没发现异常情况,为了复现场景只能后台手动执行下脚本来生成,过程中用top,htop或者free来观察状态,发现在转pdf过程中内存一直增加,最         后不够用导致失败。生pdf存在该问题,rtf不存在。

分析:pdf的生成使用了第三方工具包,过程中使用shell命令调用执行,他的内部逻辑无法去控制和改变,所以只能从os层面和业务上想办法。

方案1:加物理内存,只能临时应付。而且比较麻烦,不能长久解决问题。交付物不变。

方案2:加swap,只能临时解决,不过比较简单方便,对于处理第一象限中紧急重要的事情可以这样做。交付物不变。
         具体方法如下:
 一、
dd if=/dev/zero of=/root/swap bs=1024 count=1024000
    count表示block的数量,一般一个block为1k,这样就创建了一个1G的文件。不过需要注意在/tmp目录下的文件,在系统重启后会清理,所以最后不要放在/tmp下。
 二、
    变为swsp分区
mkswap /root/swap
  三、
    使其变为有效状态
swapon /root/swap
  四、
    为了使其在重启后也有效。需要把信息写入/etc/fstab中。格式如下:
/root/swap              swap                    swap    defaults        0 0
  五、
   增加前:
            
   增加后:
            
 明显看到free 增加了1G,这时候在去执行生成报表的程序就OK了。

方案3:修改代码,分成多份报表提供给客户。这样就不会引发内存不够的问题。但需要客户同意,交付物改变。

方案4:长久方案,拆分成更细粒度 ,交付物改变。
从合理角度来看。方案4更加合理,其他就是临时紧急的修改方案。目前已经使用方案四进行改进了。
 
  • 大小: 4.8 KB
  • 大小: 5.7 KB
分享到:
评论
1 楼 一样的鱼 2018-02-22  
00270c42d2ced1aa1425613f5b569d79新人报道!

相关推荐

    EasyExcel(生成Excel报表)基本操作.pdf

    但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。...

    Chat2DB 智能数据库客户端,数据报表工具,自然语言生成SQL,生成报表

    但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。...

    MAT-Memory Analyzer Tool Java内存泄漏分析工具1.5

    MAT 是一个开源的java内存分析工具,能够快速的分析dump文件,可以直观的看到各个对象在内存占用的量大小,以及类实例的数量,对象之间的引用关系,找出对象的GC Roots相关的信息,此外还能生成内存泄露报表,疑似...

    klocwork操作步骤 以及介绍

    (详细参见附录): C/C++缺陷类型样例 空指针释放 内存管理问题(如:内存泄漏) 数组越界 未初始化数据使用 编码风格问题(如:在条件中赋值) Java 缺陷类型样例 效率错误(如:空的 finalize 方法) 可维护性...

    iCaMs 布线管理软件

     修正偶发复杂拓扑图编辑溢出问题;  修正偶发水平信息点导入时系统无响应问题;  修正部分跨SQL版本,如2000/2008之间的不兼容性问题;  修正在SQL 2008下支持多项目问题;  修正测试数据导入异常问题; ...

    SQL SERVER 2000开发与管理应用实例

    1.9.1 内存配置 18 1.9.2 数据存储 20 第 2 章 日期处理 23 2.1 日期类型概述 23 2.2 日期处理函数 25 2.2.1 日期增减函数 25 2.2.2 日期信息获取函数 26 2.2.3 日期差值计算函数 27 2.2.4...

    操作系统实验

    要求实现:图书的录入、查询、借阅、清理、统计等功能、还要实现对每天的借阅情况进行统计并打印出统计报表,操作界面要尽量完善。图书资料信息必须保存在文件中。 2、信号通信与进程控制 (l)进程的创建:编写一段...

    C#与.NET技术平台实战演练.part2

    initializer10-5初始化只读数据10-6在构造器中使用out与ref10-7struct构造器10-7-1struct构造器的限制10-8static构造器10-8-1使用static构造器初始化静态成员10-8-2static构造器的限制10-9对象与内存10-9-l对象的...

    C#与.NET技术平台实战演练.part1

    initializer10-5初始化只读数据10-6在构造器中使用out与ref10-7struct构造器10-7-1struct构造器的限制10-8static构造器10-8-1使用static构造器初始化静态成员10-8-2static构造器的限制10-9对象与内存10-9-l对象的...

    C#编程经验技巧宝典

    ”操作符 22 <br>2.4 表达式与关键词 22 <br>0045 正确使用“&&”和“||” 22 <br>0046 如何处理程序“溢出”错误 23 <br>0047 有效使用base关键字 23 <br>0048 typeof表达式的使用 23...

Global site tag (gtag.js) - Google Analytics