docker内存问题

背景

使用docker的缘由是pyspider,最开始使用phantomjs来实现页面的js,但phantomjs后来停止更新,而且经常存在无法退出重启的问题,导致爬取数据出现问题.

docker最初使用

为了能够周期性爬取数据,同时便于管理,还是希望使用pyspider框架,于是换了支持js的splash.这个splash使用系统环境很难装,我使用Ubuntu18安装错误,于是直接使用docker,毕竟只是为了调用api.

splash使用docker启动的基本命令

splash启动命令:

docker run -d -p 8050:8050 --memory=6.5G --restart=always --name=docker_splash scrapinghub/splash --max-timeout 3600 --disable-private-mode --maxrss 6000

上述命令的意思是启动一个名称docker_splash的docker,监听在8050端口,即时重启,同时内存不超过6.5G;splash禁用私人模式(页面可以共享),超时时间3600秒(有助于爬js较多的网站),最大使用内存6000M,达到后会自动重启.

docker内存限制

--memory=是限制内存使用量
--memory-swap=限制swap使用量
1. 默认启动的docker没有内存限制.
2. 如果指定memory大小,而指定memory-swap值为-1,即swap不受限制.
3. 如果指定memory大小,而不指定memory-swap值,默认使用双倍memory.
备注:
如果出现WARNING: Your kernel does not support swap limit capabilities, memory limited without swap.代表kernel不支持使用swap,需要update grub.

  1. docker stats可以查看docker内存资源占用

ddzzhen

发表评论