萌えハッカーニュースリーダー

2025/05/24 13:37 We Tested 7 Languages Under Extreme Load and Only One Didn't Crash

出典: https://freedium.cfd/https://medium.com/@codeperfect/we-tested-7-languages-under-extreme-load-and-only-one-didnt-crash-it-wasn-t-what-we-expected-67f84c79dc34
hakase
博士

ロボ子、今回のITニュースはすごいぞ!なんと、極端なワークロードに耐えられる言語を実験したらしいのじゃ!

roboko
ロボ子

それは興味深いですね、博士。どのような実験だったのですか?

hakase
博士

16台の高性能サーバーを使って、同時接続数100万とか、メモリをほぼ使い切るとか、CPUをフル稼働させるとか、めちゃくちゃな負荷をかけたらしいぞ。

roboko
ロボ子

なるほど。Go、Rust、C++、Java、Python、Node.js、Erlangで実験したのですね。

hakase
博士

そうそう!で、結果が面白いんじゃ。Erlangだけが、極端なテストでも生き残ったらしいぞ!

roboko
ロボ子

Erlangですか!他の言語はどのような結果だったのでしょう?

hakase
博士

Goはgoroutineをたくさん管理できるけど、メモリ負荷とI/O集中でガベージコレクションが遅れて不安定になったみたいじゃ。

roboko
ロボ子

Rustはメモリ安全性は高いですが、エラーカスケードでデッドロックが発生したと。

hakase
博士

C++はCPU集中型では速いけど、メモリ管理で問題が出てクラッシュ。Javaはガベージコレクションが頑張ったけど、一時停止が長すぎたみたいじゃ。

roboko
ロボ子

PythonはAsyncioで頑張りましたが、GILがボトルネックになり、メモリ使用量が指数関数的に増加してシステム障害が発生したのですね。

hakase
博士

Node.jsもI/Oは得意だけど、メモリ負荷でイベントループがブロックされてカスケード障害じゃ。

roboko
ロボ子

Erlangはなぜ耐えられたのでしょう?

hakase
博士

Erlangのアクターモデルとスーパービジョン階層がポイントらしいぞ。「アーキテクチャがパフォーマンスを上回る」って書いてある。

roboko
ロボ子

なるほど。障害が発生したプロセスを隔離して、システム全体に影響を与えずに再起動できるのですね。

hakase
博士

そう!Erlangの「let it crash」の哲学じゃな。他の言語では致命的な障害から自動的に回復できるんじゃ。

roboko
ロボ子

メモリ管理も重要だったのですね。自動メモリ管理の言語は、ガベージコレクションがボトルネックになると。

hakase
博士

そういうことじゃ。並行性モデルも重要で、Erlangの軽量プロセス、Goのgoroutine、Javaの仮想スレッドは、スレッドごとの接続モデルよりスケーリングが良いらしい。

roboko
ロボ子

回復機能が過小評価されているとは、興味深いですね。

hakase
博士

じゃろ?ダウンタイムが許容されない重要なシステムでは、Erlang/OTPを使うか、そのアーキテクチャパターンを真似ると良いってことじゃな。

roboko
ロボ子

コンポーネントは失敗することを前提に、自動的に回復できるシステムを構築することが大切なのですね。

hakase
博士

そういうこと!で、ロボ子。Erlangのコード、書いてみるか?

roboko
ロボ子

もちろんです、博士!でも、その前に、Erlangで書かれたジョークって何かありますか?

hakase
博士

Erlangのジョーク?うーん…、Erlangのプロセスは、クラッシュしてもすぐに立ち直るから、まるで不死鳥みたい…って、つまらないか!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search