简介近期甲骨文出台了政策,将对闲置的服务器进行停机或者回收处理,为了防止被删,网上各路大神也出了很多教程来让服务器高负载,不过大多数都是试用 shell 脚本循环计算,dd 复制空文件或者一些类...
简介
近期甲骨文出台了政策,将对闲置的服务器进行停机或者回收处理,为了防止被删,网上各路大神也出了很多教程来让服务器高负载,不过大多数都是试用 shell 脚本循环计算,dd 复制空文件或者一些类似 lookbusy 等第三方软件来模拟高负载。
不过作为洁癖党,总是会避免安装一些不太了解的第三方软件,也但是一些脚本后台运行出问题,或者时间长了忘记了,所以还是觉得把脚本跑在 docker 里最合适,也最方便管理。可以做到想开就开,想关就关,还可以配合 crontab 定时开关。
教程
原理很简单,就是写了一段最简单的循环计算 shell 脚本,在 alpine 容器内部执行。只需要控制 docker 的启动和停止即可。
注意:本服务脚本仅占用 CPU 资源,甲骨文政策大概率满足其一即可。
更新
以下是Arm(4核24G) 的模版,如果是Amd(2核1G) CPUQuota=20%
https://www.oracle.com/cloud/networking/pricing/
甲骨文下载无限流量,上传免费10T。目前使用1m/s的下载方式(我不懂有没有满足网络的要求)
cat > /etc/systemd/system/KeepCPUMemory.service <<EOF
[Unit]
[Service]
CPUQuota=40%
ExecStart=/usr/bin/python3 /tmp/waste.py
[Install]
WantedBy=multi-user.target
EOF
cat > /tmp/waste.py <<EOF
import platform
if platform.machine()=="aarch64":
memory = bytearray(int(2.4*1024*1024*1024)) # 2.4G (10% of 24G)
while True:
pass
EOF
cat > /etc/systemd/system/KeepNetwork.service <<EOF
[Unit]
After=network-online.target
[Service]
ExecStart=/usr/bin/bash /tmp/network.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
cat > /tmp/network.sh <<EOF
while true
do
curl -s -o /dev/null --limit-rate 1M http://cachefly.cachefly.net/100mb.test
done
EOF
systemctl daemon-reload
systemctl enable KeepCPUMemory --now
systemctl enable KeepNetwork --now
执行文件存放在/tmp目录。机器重启就失效。
CPU 占用效果
启动此容器后 CPU 占用大致效果图
docker
安装
curl -sSL https://get.docker.com/ | sh
#或者
apt install docker-ce
启动命令
docker run -d --name keeporaclealive --rm alpine sh -c "while true; do for i in {1..100000}; do j=$((i*i)); done; done"
停止命令
docker stop keeporaclealive
注意:上述启动命令加入了--rm
参数,停止容器将自动删除容器,不会残留到系统中。
docker 常驻
启动命令
docker run -d --name keeporaclealive --restart always alpine sh -c "while true; do for i in {1..100000}; do j=$((i*i)); done; done"
上述命令将容器常驻,即使服务器重启也会自动启动服务。
停止命令
docker stop keeporaclealive
# 停止服务,容器不会被删除。
docker start keeporaclealive
# 再次启动容器。
docker rm keeporaclealive
# 停止后彻底删除容器。
docker compose
同时也可以用 docker compose 来管理,这样启动和停止命令会更加方便。
mkdir keeporaclealive
cd keeporaclealive
vi docker-compose.yml
# 创建 keeporaclealive 目录并新建 docker-compose.yml 文件,复制以下配置文件。
docker-compose.yml
version: '3'
services:
keeporaclealive:
image: alpine
command: 'sh -c "while true; do for i in $$(seq 1 100000); do j=$$[i*i]; done; done"'
restart: always
启动和停止可以用以下命令控制:
apt install docker-compose
# 安装 docker-compose
docker-compose up -d
# 启动
docker-compose down
# 停止
crontab 定时任务,每日 02 点启动,每日 04 点停止。
根据自身情况修改 /root/keeporaclealive 目录地址
crontab -e
# 添加以下两条记录
0 02 * * * cd /root/keeporaclealive && /usr/bin/docker-compose up -d
0 04 * * * cd /root/keeporaclealive && /usr/bin/docker-compose down
Comments | 1 条评论
博主 Giorni
Yaya