长时间运行的进程调试。 Strace,brk

问题描述:

我有Magento网店,它运行cron作业来执行预定进程。其中之一是产品导入。它负责导入产品并将其分类。根据sql状态,我可以看到这部分已经完成。它尝试使缓存无效后。对于缓存,我试图在socket上使用tcp或redis上的memcache。对于这两个选项我都有相同的结果。我使用strace命令来查看它想要做什么。长时间运行的进程调试。 Strace,brk

sudo strace -e trace=all -f -d -p 10319 

它是最后2小时输出是:

[wait(0x57f) = 10319] 
pid 10319 stopped, [SIGTRAP] 
brk(0x236ec000 [wait(0x57f) = 10319] 
pid 10319 stopped, [SIGTRAP] 
)       = 0x236ec000 
[wait(0x57f) = 10319] 
pid 10319 stopped, [SIGTRAP] 
brk(0x2372c000 [wait(0x57f) = 10319] 
pid 10319 stopped, [SIGTRAP] 
)       = 0x2372c000 
[wait(0x57f) = 10319] 
pid 10319 stopped, [SIGTRAP] 
brk(0x2376c000 [wait(0x57f) = 10319] 
pid 10319 stopped, [SIGTRAP] 
)       = 0x2376c000 

我知道BRK用来分配内存。

其他输出可以表示什么?什么可能是这种行为的原因?有任何想法吗?

问题出在array_merge函数中,有270000个实体的循环,并且它们都在该循环内被合并,这就是为什么脚本分配如此大量的内存的原因。取而代之的是我使用了联合数组,速度更快。