BayServer for PHP制限事項

BayServer for PHPの制限事項です。

マルチスレッドの動作について

BayServerはスレッド間の通信コストを最小化するため、スレッド間で変数を共有しています。つまり、PHPのparallelパッケージが使えないため、実質的にBayServerをマルチスレッドで動作させることができません。

従って、multiCoreをoffにするとGrandAgentの数は1になるので、この設定で運用するのは難しいでしょう。

TLS使用時のノンブロッキング動作について

BayServerはノンブロッキングAPIを使用することで爆速化を行っていますが、PHPのSSLソケットはノンブロッキングで動作しません(正確に言うと、API的にはサポートしているように見えるが、実際はちゃんと動いていない)。

従って、Secureドッカーを使用して暗号化した場合はブロッキングモードで動くようにしています。ただし、完全にブロッキングモードにするとパフォーマンスに影響が出てしまうので、100msのタイムアウトを設定しています(これでもCPU的にはとんでもなく長い!)。この値はPortドッカーの「nonBlockingTimeout」という何とも変な名前のパラメータで変更できるようになっています。

Twitterでフォローしよう

おすすめの記事