PHP程序执行报segfault at error 4

这个错误搞了很久,大概晚上将近0点接到朋友请求协助,说这个已经折腾了他们好几天了,研发把代码也扒拉个遍完全没有线索,请求支援,我从晚上12点开始一直折腾到早上快4点,也因为这个是batch每次跑的时间等待的比较久,还有要避开某些正在处理的batch,断断续续搞最后快4点实在是折腾不了,也没什么头绪,满世界查资料没一点进展,就先靠在椅子上睡了
早上6点醒来,仔细想了想这个业务流程,看了batch触发的sql日志,发现SQL其实是有跑一些的,说明不是一运行就程序报错,可能跟量或时长有关系,也因为是出报表的batch,按年处理,每年数据量巨大,然后会生成临时表存放,猜测有没有可能是这个方面的因素导致的,毕竟segfault at从网上查到的信息是说内存地址读取超出区域范围,就开始着手调整PHP的连接数据库相关的参数,尤其是内存大小这块儿的

调整PHP MySQL相关参数

不想太多,跟MySQL相关的,缓存相关的参数都先调整了再说,排查问题时,尤其是没有头绪时,找到参数先往大了加,如果太小可能看不出效果,尤其是Batch这种批处理任务

> vim /etc/php.ini

调整了之后,再测试发现比远来的现象有些改善,本来是一个年度都处理不了就崩了,现在是能跑完一个年度了,这就来劲了,再加大

再次调整部分缓存参数

很明显,跟timeout没太大关系了,重点是cache_size和memory_limit上

调整完成后,Batch任务顺利跑完,跑了将近2个小时

这里面有些参数的值肯定是不合理的, 方向上我努力支援了,参数值的合理性上,就有他们自己去解决吧,



如果想赏钱,可以用微信扫描下面的二维码,一来能刺激我写博客的欲望,二来好维护云主机的费用; 另外再次标注博客原地址 itnotebooks.com 感谢!

Golang zip压缩及加密

实现方法 Go // Copyright 2021 EricWinn // Author: Eric Winn // Email: eng.eric.winn@gmail.com // Time: 20...

阅读全文

GORM MySQL查询结果写入CSV文件

实现方法 Go import ( "database/sql" "encoding/csv" "fmt" "io" "os" "time" ) type Converter struct { ...

阅读全文

Golang SFTP客户端,实现文件上传

SFTP客户端初始化 Go import ( "MySQLExport/tools/tools" "github.com/pkg/sftp" "golang.org/x/crypto/ssh" "io" ...

阅读全文

欢迎留言