1

У меня Raspberry Pi 3B и я хочу запустить Lancache на нем. Я знаю, что производительность будет не очень хорошей, поскольку Raspberry Pi имеет только Fast Ethernet и мобильный процессор.

Образ Docker состоит из трех частей: Dnsmasq, Sniproxy и Nginx. Первые два работают нормально, но Nginx завершает работу с ошибкой:

[alert] 1#1: mmap(MAP_ANON|MAP_SHARED, 268435456) failed (12: Out of memory)

Пи использует ~ 100 МБ оперативной памяти из 940 МБ, поэтому проблем не должно быть. На диске также достаточно свободного места.

В чем может быть причина этой ошибки?

2 ответа2

0

Одна вещь, о которой я могу подумать, это увеличить пространство подкачки на Raspberry Pi.

Конфигурация файла подкачки находится по адресу:

/etc/dphys-swapfile

Переменная, которую вы хотите изменить, называется "CONF_SWAPSIZE". Значение по умолчанию должно быть равно 100, попробуйте увеличить его до 2048 (2 ГБ), чтобы посмотреть, решит ли это вашу проблему.

Вот небольшой скрипт, который я сделал для увеличения размера свопа:

sudo sed -i -e 's/CONF_SWAPSIZE=.*/CONF_SWAPSIZE=2048/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Чтобы вернуть размер свопа в нормальное состояние:

sudo sed -i -e 's/CONF_SWAPSIZE=.*/CONF_SWAPSIZE=100/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Обратите внимание, что увеличение размера свопа - это хороший способ изнашивания вашей SD-карты, так что это может быть не лучшим решением в долгосрочной перспективе.

0

Когда вы посмотрите на конфигурацию nginx (data/conf/*.nginx.conf) в этом проекте, вы обнаружите следующие строки:

proxy_cache_path /cache/arenanet keys_zone=arenanet:256m levels=1:2:2 inactive=365d;

Это приведет к тому, что nginx выделит 256 МБ (268435456 байт) памяти для управления этим кешем. Это то, что не удается.

Сейчас существует 13 таких операторов, по одному на каждую поддерживаемую услугу. В общей сложности для этого требуется 3,25 ГБ памяти. Это может составить больше, чем может предоставить 32-битное адресное пространство, с обменом или без него. Это просто не может работать.

Вам необходимо либо изменить эту конфигурацию, уменьшив размер кэша ключей (и, следовательно, максимальное количество кэшируемых объектов), либо использовать 64-разрядную операционную систему (к счастью, Pi 3 имеет 64-разрядный процессор). Тем не менее, без реальной оперативной памяти для поддержки этих кэшей все будет очень медленно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .