简介

近期甲骨文出台了政策,将对闲置的服务器进行停机或者回收处理,为了防止被删,网上各路大神也出了很多教程来让服务器高负载,不过大多数都是试用 shell 脚本循环计算,dd 复制空文件或者一些类似 lookbusy 等第三方软件来模拟高负载。

不过作为洁癖党,总是会避免安装一些不太了解的第三方软件,也但是一些脚本后台运行出问题,或者时间长了忘记了,所以还是觉得把脚本跑在 docker 里最合适,也最方便管理。可以做到想开就开,想关就关,还可以配合 crontab 定时开关。

甲骨文 Oracle 能创建几台免费服务器

首先,每个甲骨文账号免费磁盘配额为200G,单台服务器默认最小磁盘空间为47G,所以免费用户最多只能创建4台服务器。
免费服务器包含固定配置的 X86 服务器和自定义配置的 ARM 服务器,具体如下:

  • X86 - VM.Standard.E2.1.Micro 固定1C/1G/50M带宽配置

  • ARM - VM.Standard.A1.Flex 最高4C/24G/4G带宽配置

VM.Standard.E2.1.Micro 为固定配置1核/1G内存,最多只能创建2台,创建后显示 Always Free
VM.Standard.A1.Flex 根据每月的计算配额而定,免费用户最高可以创建4核/24G内存。在自定义配置时,选配的 CPU 和内存固定比例比为1:6,所以可以根据自己需求分别创建:

  • 1 台 4 核心 24GB 内存

  • 2 台 2 核心 12GB 内存

  • 4 台 1 核心 6GB 内存


注意:ARM Flex 服务器创建后不会显示Always Free,但只要在配额内是不会扣费。


由于上文提到的免费账号磁盘配额限制,所以一个账号无论选择 X86 还是 ARM,最多只能创建 4 台免费服务器。推荐以下几种方式:

  1. 单台 ARM 4C/24GB/200G 在创建前选择磁盘大小为 200G(性能存储带宽最大化)

  2. 单台 ARM 4C/24GB/100G + 两台 X86 1C/1G(性能和数量均衡选择)

  3. 两台 ARM 2C/12GB + 两台 X86 1C/1G(架构性能数量同时最大化)

  4. 四台 ARM 1C/6GB 均保持磁盘大小为默认即可(数量性能带宽同时最大化)

创建完毕后建议访问存储 - 块存储 - 引导卷页面,查看所有磁盘都显示Always Free
计算 - 实例页面中的 ARM Flex 服务器是不会显示Always Free,只要保证不超过4C/24G配额即可。



教程

原理很简单,就是写了一段最简单的循环计算 shell 脚本,在 alpine 容器内部执行。只需要控制 docker 的启动和停止即可。


注意:本服务脚本仅占用 CPU 资源,甲骨文政策大概率满足其一即可。

CPU 占用效果

启动此容器后 CPU 占用大致效果图

docker

启动命令

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 keeporaclealivecd 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

启动和停止可以用以下命令控制:

docker-compose up -d# 启动docker-compose down# 停止

crontab 定时任务,每日 10 点启动,每日 14 点停止。
根据自身情况修改 /root/keeporaclealive 目录地址

crontab -e# 添加以下两条记录0 10 * * * cd /root/keeporaclealive && /usr/local/bin/docker-compose up -d
0 14 * * * cd /root/keeporaclealive && /usr/local/bin/docker-compose down