Недавно по неизвестным мне причинам сайт перестал работать с сообщением out of memory
Естественно любой друпаллер скажет "памяти добавь, ты что не знаешь, как прожорлив друпал?", но я начал разбираться.
Выяснилось, что выпадает в функции _menu_tree_data. При этом до вызова этой функции потребление памяти 14М, а из функции уже вываливается с нехваткой памяти (~32M).
В _menu_tree_data берутся данные из menu_links, полез смотреть эту таблицу и выяснил, что каждый link_path этой таблице повторяется 10 раз. 1 выглядит наиболее вменяемо, а остальные неправильные, на мой взгляд.
Вот пример записи:
admin/build/block/configure 2 17 25 64 0 0 0 0 0 0
admin/build/block/configure 476 0 0 0 0 0 0 0 0 0
Слева links_path, далее идут числа p1/2/3/... p1 - id первого участка меню (т.е. admin/build/block/configure ), далее id для admin/build/block/configure и т.д..
Из 10 копий каждого пункта меню только у первого правильные значения для pN, у остальных p1 > 400 , а p2/3+.. = 0.
В итоге сделал дамп таблицы (в атаче) и truncate. Это помогло, но надолго ли?
Кто-нибудь сталкивался с таким?
Вложение | Размер |
---|---|
![]() | 63.04 КБ |