
BayServer for PHPの制限事項です。
マルチスレッドの動作について
BayServerはスレッド間の通信コストを最小化するため、スレッド間で変数を共有しています。つまり、PHPのparallelパッケージが使えないため、実質的にBayServerをマルチスレッドで動作させることができません。
従って、multiCoreをoffにするとGrandAgentの数は1になるので、この設定で運用するのは難しいでしょう。
TLS使用時のノンブロッキング動作について
BayServerはノンブロッキングAPIを使用することで爆速化を行っていますが、PHPのSSLソケットはノンブロッキングで動作しません(正確に言うと、API的にはサポートしているように見えるが、実際はちゃんと動いていない)。
従って、Secureドッカーを使用して暗号化した場合はブロッキングモードで動くようにしています。ただし、完全にブロッキングモードにするとパフォーマンスに影響が出てしまうので、100msのタイムアウトを設定しています(これでもCPU的にはとんでもなく長い!)。この値はPortドッカーの「nonBlockingTimeout」という何とも変な名前のパラメータで変更できるようになっています。