月€8のContabo VPS 1台に、cron登録の自動処理を60本と、Webサイトを4つ同居させて41日間無停止で動かしています。実際に何が余っていて、何が最初に詰まったのかを、手元の実測値だけで書きます。
構成:月€8のVPS 1台に全部乗せている
使っているのはContaboのアジア・シンガポール拠点のVPSで、料金は月€8.00です。スペックはCPU 4コア、メモリ7,941MB、ディスク72GB。OSはUbuntu 24.04で、Apache 2.4 / PHP 8.3 / MariaDB という構成です。
この1台に乗っているものは、大きく分けて2種類あります。
- cronに登録した自動処理:60本
- Webサイト4つ(WordPress 2つ、Node.jsアプリ2つ)
自動処理の内訳は、SNS自動運用が50本、YouTube関連が13本、ブログ記事の自動生成・投稿が3本です。この内訳を単純に足すとcron 60本という数と一致しません。1本のジョブが複数の用途にまたがっているのか、私の数え方がずれているのか、正確なところは把握できていません。ここは「分かっていない」とだけ書いておきます。
実測:CPUもメモリもディスクも余っている
41日間動かしたあとの数字がこちらです。
uptime : 41日(無停止) memory : 1,442MB / 7,941MB 使用 disk : 72GB のうち 22% 使用 load average: 1.34 / 1.76 / 1.92(4コア)
メモリは7,941MB中1,442MBしか使っておらず、約6.3GBが手つかずで残っています。ディスクも72GBの22%です。load averageは1.34〜1.92で、4コアに対してこの値なので、CPUも張り付いてはいません。

「60本」でも同時に動いているのは2つだけ
数字が思ったより低かったので、実際に走っているPythonプロセスを数えてみました。結果は2つです。
理由は単純で、60本を24時間に散らして登録しているからです。cronの本数は「登録数」であって「同時実行数」ではありません。ここを混同すると、必要以上のスペックを買うことになります。60本という数字だけ見ると重そうに感じますが、実行タイミングをずらしていれば、瞬間的な負荷は数本分にしかなりません。
サーバーの負荷を決めるのはジョブの本数ではなく、同時に走る本数です。60本登録していても、同時実行が2本なら2本分の負荷しかかかりません。
唯一、明確にサーバーを重くしたのは ffmpeg
ここまで余裕がある構成でも、1つだけ実害が出た処理があります。動画生成のffmpegです。
ffmpegはCPUを素直に使い切りにいくので、放っておくと動画の書き出し中に、同じサーバーに同居しているWebサイトの表示が遅くなりました。自動処理のためにサイトの応答が犠牲になるのは本末転倒です。
ffmpegを何も制限せずにcronから叩いていた時期は、書き出しが走るたびに同居中のWebサイトが重くなりました。自動処理は成功しているのに、サイト側が遅いという状態です。
対策として、実行時に使うコアと優先度を落としました。
taskset -c 0-1 nice -n 10 ffmpeg ...
taskset -c 0-1 で4コアのうち2コアに限定し、nice -n 10 で優先度を下げる。この2つを付けただけで、書き出し中にWebサイトが遅くなる症状は出なくなりました。残り2コアがWebサイトの応答用に空くこと、そして優先度が低いのでApacheやPHPに割り込まれることが効いています。
CPUを食う処理は「止める」のではなく「コアを絞って優先度を下げる」だけで同居できました。動画の書き出し自体は今も同じサーバーで走っています。
本当のボトルネックはサーバーではなかった
41日運用してはっきりしたのは、詰まる場所はCPUでもメモリでもなく、各サービスのレート制限だったということです。
メモリは6.3GB余り、ディスクは78%空いていて、同時実行のPythonプロセスは2つ。この状態で「もっと本数を増やせるか」を考えると、増やせない理由はサーバー側にはありません。投稿先・取得先の各サービスが受け付けてくれる回数が上限で、それ以上叩けないから間隔を空けている、というのが実態です。
自動処理の本数を増やしたいときにまずサーバーを増強するのは、順番が違う可能性があります。私の環境では、上限を決めていたのは契約プランではなく、相手側サービスの制限でした。増強しても叩ける回数は増えません。
この構成で言えること/言えないこと
- 4コア / 7,941MB / 72GB の1台で、cron 60本とWebサイト4つを41日間無停止で回せた
- ジョブを24時間に散らせば、同時実行は2プロセス程度に収まった
- ffmpegは
tasksetとniceで同居先のWebサイトへの影響を消せた
- cron 60本と内訳(50 / 13 / 3)の対応関係は、正確には把握できていない
- 41日より長期で、あるいは同時実行がもっと増えたときにどうなるかは未検証
- 各サービスのレート制限の具体的な数値は、この記事では扱っていない
結論として、月€8のVPS 1台は、この規模の自動処理では余っていました。ただしそれは「安いサーバーで何でもできる」という話ではなく、CPUを食う処理を1つだけ隔離した結果であり、かつ本数の上限をサーバーではなく外部サービスが決めていたから成立している、というのが実際のところです。
- 月€8 / 4コア / 7,941MB / 72GB のContabo VPS 1台で、cron 60本+Webサイト4つを41日間無停止で運用中
- メモリは1,442MB / 7,941MBしか使わず、ディスクも22%。load averageは1.34 / 1.76 / 1.92
- 60本あっても24時間に散らしているため、同時に走るPythonプロセスは2つだけだった
- 唯一の実害はffmpeg。
taskset -c 0-1 nice -n 10で2コアに限定+優先度を下げて解決 - ボトルネックはCPUでもメモリでもなく、各サービスのレート制限だった
- cron本数と内訳の数が合わない点、41日を超える長期挙動は分かっていない




