Advertisement

Excel导出导致内存耗尽

阅读量:

今天遇到了一个问题,在提取或生成线上两个月的Excel统计数据时频繁出现错误现象;进一步排查发现问题根源在于检查了相关日志后,则显示提示信息:

复制代码
    PHP Fatal error:  Allowed memory size of 298844160 bytes exhausted (tried to allocate 262144 bytes)

最初想到的是,在Excel导出过程中对内存的需求较高;当数据量增大时容易导致内存不足;随后采取了代码优化措施,并删除不再需要的数据数组以释放资源。

继续在预发布环境中(全部数据集)进行测试发现依然出现error错误随后立即检查问题根源发现依然是之前提到的那种报错信息ORd提示了一种特定的错误类型于是进一步排查发现问题主要是由于关联了两张冗余表导致系统在处理过程中产生了不必要的计算负担接着检查相关设置发现其中包含了一个占用内存较大的text字段类型为了优化资源消耗采取措施删除冗余关联表并将select操作限定为特定字段以减少对数据库的压力最终再次在预发布环境中进行测试显示没有问题接下来耐心等待数据处理完成并开始下载相关文件

遇到意料之外的问题是PHP-FPM报告了time out错误,并采取措施重新配置PHP-FPM以解决时间超限问题。

复制代码
 ini_set('max_execution_time', '3

全部评论 (0)

还没有任何评论哟~