Ускорение выполнения команды ipfs add
В двух предыдущих постах я рассказал о том, что такое ipfs и как развернуть сайт в ipfs и, помимо этого, для эксперимента настроил раздачу своего блога через ipfs: ipfs.romka.eu.
Сайт обслуживается дешёвой виртуальной машиной, а, как оказалось, ipfs довольно прожорлив до ресурсов процессора, особенно при выполнении команды ipfs add
. Несколько раз хостер просто молча прибивал мою виртуалку из-за превышения ею каких-то лимитов.
В моём случае ipfs работает в докер-контейнере, который запускается через docker compose
. Поэтому я сконфигурировал запуск контейнера следующим образом, чтобы сильно ограничить потребляемые ресурсы:
ipfs:
image: ipfs/kubo:latest
container_name: ipfs_container
volumes:
- /home/romka/ipfs:/data/ipfs
- /var/www/romka.eu/public:/data/ipfs/public:ro
<...>
restart: always
command: daemon --enable-gc --migrate=true --enable-pubsub-experiment
cpus: 0.3
mem_limit: 256m
memswap_limit: 256m
environment:
GOMAXPROCS: 1
Теперь ipfs-процесс ограничен по ресурсам и хостер доволен, но вот команда ipfs add
стала падать с ошибкой вида Error: unexpected EOF
. Я не стал копать глубже, но в свете того что ошибка появилась после добавления ограничений, похоже на то что это следствие того что ОС просто прибивает процесс ipfs из-за Out of Memory error (OOM). Дальше я расскажу как мне удалось исправить эту проблему.