なんとなくそう思ってたんだけど、ちっちゃいサーバーって大量アクセスに耐えられるの?って話、気になったことない?💭
わたしもインディーズでちょこっと作ったアプリを、Linuxの小さなボックスで動かしてるんだけど、普段はだいたい300人くらいの訪問者で安定してる感じ。だけど、もし急にアクセスがドバーっと来たら…「Hug of Death(抱き締め死)」って言うらしいんだけど、その抱き締めに耐えられるのかって試してみたんだ✨
ざっくりテストしてみたよ🔧
色々試したんだけど、ポイントはこんな感じ:
-
読み込み(Reads)
100リクエスト/秒(RPS)でもエラーなし!意外と強いじゃんって思った😳 -
書き込み(Writes)
最初はダメだったけど、SQLiteのWALモード(Write-Ahead Logging)をオンにしたら問題なし👌 -
検索(Search)
ここで一旦つまずいた…。普通のSQLite検索だとすぐ壊れちゃって動かなくなったの😱
だけどSQLiteのFTS5(全文検索エンジン)に切り替えたら、ちゃんと動くようになった!これにはびっくり✨
どうしてこうなったの?🤔
正直、SQLiteって軽いから大規模アクセスは無理かなーと思ってたんだけど、ちょっとした設定や使い方次第で結構いけるみたい。WALモードは書き込みのパフォーマンス改善に効果的で、FTS5は高速で賢い全文検索ができる仕組みだから負荷にも強いんだって🧠
まとめると📌
- 小さなサーバーでも工夫すれば100RPSくらいは耐えられるかも
- SQLiteのWALモードを使うと書き込みが安定する
- 検索は普通のSQLiteだと弱いけど、FTS5に変えればぐっと良くなる
なんか、こじんまりした環境でもちゃんと戦えるってわかると、ちょっとホッとするよね🥺💗
こんな感じで負荷テストしてみると、自分の環境の限界や強みが見えてくるから面白いよ〜👀✨
コメント
レオ
Hug of death(アクセス殺到)は思ったほど大変じゃないよ。 RedditとHNの両方でフロントページに出たけど、同時600人しか見てなくて意外と余裕だった。
リリー
VPSやホスティング次第だね。 EC2はCPUが足りなくなることが多くて、正直性能はイマイチだと思う。 10年前に専用サーバーでSNS運営してたけど、同じスペックのVPSより全然パフォーマンス良くてコスパも良かったよ。
ハンナ
icanhazipの話を思い出したよ:小さな無料IPツールがどう生き残ったかの話だね。
クリス
SQLite + WAL + FTS5は意外と伸びるよ。 読み込みが多いなら特に。 接続数制限やI/Oが本当の問題だから、キャッシュやリバースプロキシでだいぶ余裕ができる。
ジョージ
読み込み100RPSでエラーなし? 大したことないでしょ、まあPythonならまあまあかな。 2019年に組み込みLinuxの端末を24時間で大量アップデートした時、2CPU2GBの安いVPSでC言語のサーバー使って50k/s超えの同時接続も捌いたよ。
ノーラン
性能気にするならもっと速くて作りやすいフレームワークや言語あるよ。 PythonとFastAPIは遅い方だし、SQLiteは大抵ボトルネックじゃない。 CPU負荷減らすならPythonやめるのが手っ取り早い。
ハンナ
Apache AbかWrk使ってみて。
ベン
この絵はマジでAIアートっぽいな。
レオ
すごい投稿だね、chatgpt!
グレース
エラーログやネットワーク/HTTPエラーはどうなってる? 記事では『エラーなし』だけで詳しく触れてないよね。
ハンナ
記事楽しかったし、安いVPSであれだけ出せるのはすごい。 でも、リンクされてるRSSフィードは存在してないよ。