GD использует много памяти. Он полностью загружает изображение в память и распаковывает его, поэтому вам потребуется не менее 32 бит на пиксель. Изображение размером 800 x 600 затем используйте:
800 * 600 * 32 бита = 15,4 мегабита = 2 МБ
Это только для загрузки изображения. Я слышал, что он будет использовать двойное значение, если вы измените размер, и если ваши изображения будут еще больше, это будет еще больше памяти.
Вам действительно стоит подумать о кэшировании ваших миниатюр, так что они должны быть сгенерированы только один раз (это ускорит страницу и для ваших посетителей!).
Я также прочитал сейчас, что вы загружаете изображения с внешнего сервера, и в этом случае вы ДЕЙСТВИТЕЛЬНО должны кэшировать изображение, потому что в противном случае ваши посетители должны ждать, пока вы загрузите все изображение в первую очередь. Это становится еще хуже, если внешний сервер отключен или перегружен, и вашим посетителям придется ждать тайм-аут (это будет выглядеть так, как будто ваш сервис работает медленно). В дополнение к этому вы потеряете много трафика, если будете загружать изображение каждый раз, когда пользователь запрашивает его миниатюру.
Поскольку GD использует так много памяти, может быть целесообразно вместо этого генерировать миниатюры, используя расширение IMagick. ImageMagick значительно лучше масштабируется в отношении потребления памяти и также очень быстр (но вы все равно должны кэшировать изображения по причинам, указанным выше).