目標は単純です: クライアントは HTTP リクエストを送信してデータをクエリし、いくつかのキーでレコードを更新します。 最高のリクエスト: 500/秒 (高いほど良いですが、システムを達成しやすくし、マシンの使用を減らしながら、この要件を満たすのが最善です) )
私がやったこと:nginx + php-cgi(phpを使用)でhttpリクエストを処理し、phpはthrift RPCを使用して、DB(mysql)のクエリと更新にのみ使用されるDBプロキシからデータを取得します。DB プロキシは、mysql 接続プールと thrift の TNonblockingServer を使用します。(私の国には 2 つの ISP があり、DB プロキシは複数の Isp マシンに展開され、DB もそうです。経験に応じて、Web サーバーは単一の Isp マシンに展開できます)
何が問題なのか: ストレステスト (500/秒以上の場合) を行ったところ、php ログから " TSocket: Could not connect to 172.19.122.32:9090 (Connection reject [111]") が見つかりました。ということで、thrift connection boolを使ってthrift接続を減らす設計をしているのですが、phpには接続プールがなく(DB接続プール技術もあるみたいです)、phpは対応していません。
したがって、プロジェクトは最初から間違った方法で設計されているのではないかと思います(php、thriftを使用するなど)。私が行ったことに基づいてこれを解決する良い方法はありますか? そして、ほとんどの人は私の厄介な計画を疑うだろう. さて、あなたの新しいスキームは大いに役立ちます
ありがとう。