Длительная отладка процесса. Стрейс, Брк

У меня есть интернет-магазин Magento, он запускает задания cron для выполнения запланированных процессов. Одним из них является импорт продукции. Он отвечает за импорт продуктов и их назначение категориям. Согласно состоянию sql я вижу, что эта часть была завершена. После того, как он попытается аннулировать кеш. Для кеша я пытаюсь использовать memcache на tcp или redis на сокете. Для обоих вариантов у меня одинаковый результат. Я использую команду strace, чтобы посмотреть, что она пытается сделать.

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 используется для выделения памяти.

Какой еще вывод может означать? Что может быть причиной такого поведения? Любые идеи?


person Viacheslav Kondratiuk    schedule 21.11.2014    source источник


Ответы (1)


Проблема была в функции array_merge, был цикл на 270000 сущностей и все они были объединены внутри этого цикла, поэтому скрипт выделял такой большой объем памяти. Вместо него я использовал ассоциативный массив, который намного быстрее.

person Viacheslav Kondratiuk    schedule 30.11.2014