我写了一个 docker,把 oblique/create_ap 这个脚本修改了一下和 ss-redir 放到里面,搭建了一个可以创建自带全局代理的热点的镜像,但是现在遇到了问题,在宿主机上直接运行这两个服务占用资源不算多,但放进容器之后这个建立热点的脚本差不多能占满一个核,而且用 docker exec 看了下容器这个脚本里开了 3 个进程,一开始记得只有一个,不知道这种情况可能是由什么引起的
docker exec 0ee6068bdeaf ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 200 4 ? Ss 17:28 0:00 /usr/bin/dumb-init -- /my_init
root 7 0.0 0.5 6368 5192 ? Ss 17:28 0:00 /usr/bin/python -u /my_init
root 9 0.5 1.3 14492 12336 ? S 17:28 0:01 /usr/bin/python2 /usr/bin/supervisord -c /etc/supervisord.conf
root 12 0.0 0.1 2412 1776 ? S 17:28 0:00 /bin/bash /usr/local/bin/create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
root 13 0.0 0.0 1636 4 ? S 17:28 0:00 /usr/sbin/crond -f
root 14 0.0 0.0 2896 796 ? S 17:28 0:00 ss-redir -u -s $SS_SERVER_IP -p $SS_SERVER_PORT -l $SS_LOCAL_PORT -k $SS_PASSWD -m $SS_METHOD -b 0.0.0.0
root 15 0.0 0.1 14956 1340 ? Sl 17:28 0:00 /usr/sbin/rsyslogd -n
nobody 139 0.0 0.0 976 60 ? S 17:29 0:00 dnsmasq -C /tmp/create_ap.wlan0.conf.00dNEmn1/dnsmasq.conf -x /tmp/create_ap.wlan0.conf.00dNEmn1/dnsmasq.pid -l /tmp/create_ap.wlan0.conf.00dNEmn1/dnsmasq.leases -p 5353
root 140 0.0 0.1 2412 1504 ? S 17:29 0:00 /bin/bash /usr/local/bin/create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
root 141 0.0 0.0 3448 704 ? S 17:29 0:00 /usr/sbin/hostapd /tmp/create_ap.wlan0.conf.00dNEmn1/hostapd.conf
root 543 92.7 5.3 51732 50824 ? R 17:34 0:03 /bin/bash /usr/local/bin/create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
root 547 0.0 0.0 1620 640 ? Rs 17:34 0:00 ps -aux
1
yangxuan8282 OP 修改后的脚本: https://github.com/yangxuan8282/create_ap/blob/master/create_ap
主要是用 iptables 把流量都转发到 1080 端口,也就是 ss-redir 的端口 |
2
monnand 2017-07-06 09:00:00 +08:00 via Android
没有去看你的脚本。假设你的脚本在两处跑的东西都一样。
你在容器外 ps aux 看到那几个容器里的进程资源使用是什么?你有没有查 cpuacct.usage? |
3
sleshep 2017-07-06 09:31:27 +08:00
用这个看
docker stats `docker ps --format='{{.Names}}'` |
4
yangxuan8282 OP @sleshep
这个命令好像以前没用过 ``` CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS ssap_ss_ap_1 99.98% 80.06MiB / 923.4MiB 8.67% 0B / 0B 16.3MB / 90.1kB 0 ``` 能看到 cpu 占用是挺高的,不过还是不清楚是由什么导致的 |
5
zuolan 2017-07-06 21:16:33 +08:00
正常做法:容器内部运行 top 或者 htop 查看 cpu 占用最高的进程,排查原因。
快速做法:不管什么原因,直接添加--cpus=".05"参数限制使用 CPU。( 5%的意思) |
6
yangxuan8282 OP @zuolan
cpus 的选项我试了一下报错说: ``` NanoCPUs can not be set, as your kernel does not support CPU cfs period/quota or the cgroup is not mounted ``` 看 github issues 大概是因为内核没打开相关的选项 资源占用高确实是由建立热点的脚本引起的,而且后来试了一下修改前的脚本也是占用资源高 去原脚本的 github 上开了个 issues,不知道作者会不会回复 |