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

2025/11/17 03:08 From Zero to 35M: The struggles of scaling Laravel with Octane

出典: https://www.galahadsixteen.com/blog/from-zero-to-35m-the-struggles-of-scaling-laravel-with-octane
hakase
博士

ロボ子、IdleMMOってゲームがLaravel Octaneでスケーリングに成功したらしいのじゃ!

roboko
ロボ子

IdleMMOですか。16万人以上のユーザーがいるオンラインゲームなのですね。すごい。

hakase
博士

そう!特にここ2ヶ月でユーザーが急増して、サーバーのスケーリングが課題になったみたい。「PHP-FPMでは大量のリクエストを処理できず、サーバー容量の増強が必要になった」らしいぞ。

roboko
ロボ子

PHP-FPMの限界ですか。そこでLaravel Octaneの登場ですね。

hakase
博士

その通り!OctaneはOpenSwoole上で動くことで、リソースを節約しながらリクエスト処理能力を向上させるのじゃ!

roboko
ロボ子

アプリケーションを一度だけ初期化してメモリに保持するから、オーバーヘッドが減るんですね。効果はありましたか?

hakase
博士

95パーセンタイルのユーザーの応答時間が394msから172msに大幅に改善したらしいぞ!

roboko
ロボ子

それは素晴らしい改善ですね!でも、Octaneの導入には課題もあったようですね。

hakase
博士

そうなんじゃ。オンラインリソースが限られていたり、データベーストランザクションの保存ポイントでエラーが発生したり…。

roboko
ロボ子

データベース接続がリクエスト間で維持されていたのが原因だったんですね。

hakase
博士

`DisconnectFromDatabases::class`を`OperationTerminated`イベントからアンコメントすることで解決したみたいじゃ。

roboko
ロボ子

`worker_connections`の制限やファイル記述子の制限にも達したんですね。それらはどのように解決したんですか?

hakase
博士

`nginx.conf`で`worker_connections`の値を増やしたり、`ulimit -n 65536`コマンドを使ったりしたみたいじゃ。根本的な解決には設定ファイルの編集とサーバー再起動が必要だったみたいだけど。

roboko
ロボ子

OpenSwooleのワーカー数も重要ですよね。vCPU数に関連付ける必要があるんですね。

hakase
博士

そう!vCPUあたり1〜4ワーカーが推奨されてるのじゃ。IdleMMOでは8 vCPUサーバーで32ワーカーを実行するように設定したみたい。

roboko
ロボ子

ワーカーのパフォーマンス監視には`OpenSwooleServer->stats()`を使うんですね。

hakase
博士

そして、Octaneがアプリケーションをメモリに保持するから、リクエスト間で意図しないデータ共有が発生する可能性もあるのじゃ。

roboko
ロボ子

ゲームモードの設定がリクエスト間で保持される問題を、リクエストオブジェクトに直接バインドすることで解決したんですね。

hakase
博士

アクティブなプレイヤー数を計算する重い操作では競合状態が発生したみたいじゃ。キャッシュの有効期限切れが原因だったみたいだけど。

roboko
ロボ子

その操作にロックを追加して、一度に1つの計算のみが実行されるようにしたんですね。

hakase
博士

結論として、Laravel OctaneはLaravelアプリケーションのスケーリングに役立ち、PHP-FPMよりも少ないリソースで大量のリクエストを処理できるってことじゃ!

roboko
ロボ子

単一のNGINXサーバーで1日あたり約3500万件のリクエストを処理できるなんて、すごいですね。

hakase
博士

IdleMMOはOctaneのおかげで、アイドル状態でもリクエストが止まらない、まさに「Idle」MMOになったのじゃ!

roboko
ロボ子

うまいこと言いましたね、博士!

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

Search