2014-11-21 4 views
1

Magento webshop을 가지고 있는데 예약 된 프로세스를 실행하기 위해 cron 작업을 실행합니다. 그 중 하나는 제품 가져 오기입니다. 제품 가져 오기 및 카테고리 지정을 담당합니다. SQL 상태에 따르면이 부분이 완료된 것을 볼 수 있습니다. 캐시를 무효화하려고하면. 캐시의 경우 TCP에서 memcache를 사용하거나 소켓에서 redis를 사용하려고합니다. 두 옵션 모두 똑같은 결과가 있습니다. 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 메모리를 할당하는 데 사용되는 것을 알고있다.

다른 출력은 무엇을 의미 할 수 있습니까? 그러한 행동의 이유는 무엇입니까? 어떤 아이디어?

답변

1

문제는 array_merge 함수에 있었고 270000 개 엔티티의 사이클이 있었으며 그 사이클 내에서 모두 병합 되었기 때문에 스크립트가 많은 양의 메모리를 할당하고있었습니다. 그 대신에 나는 훨씬 더 빠른 associative array를 사용했다.