Как решить проблему с памятью?
Отключите лишние extensions (modules), включите opcache. Как вариант - посмотрите в сторону zRam, чтобы уменьшить занимаемый объём RAM. Но в этом случае - вы будете оплачивать экономию нагрузкой на CPU. Через nginx распределите нагрузку на несколько серверов. Но в таком случае Вам придётся выделить отдельный сервер под БД и файловое хранение (не обязательно, но желательно), а так же решать проблему с пропускной способностью сети. 
Смотри memory_get_peak_usage() - он покажет максимальное значение которе используется.
Скорее всего помять отжирает массив данных полученныйх из БД. И используй fetch_row.