シンプルな PHP ライブラリを使用して、HTTP 経由でドキュメントを SOLR インデックスに追加しています。
現在、3 つのサーバーが関与しています。
- インデックス作成ジョブを実行する PHP ボックス
- インデックスされるデータを保持するデータベース ボックス
- ソーラーボックス。
80 ドキュメント/秒 (100 万ドキュメントのうち) で、PHP および solr ボックスのネットワーク インターフェイスで異常に高い割り込み率に気付きました (2000/秒; さらに、グラフはほぼ同じです。 PHP ボックスの速度が急上昇し、Solr ボックスでも急上昇します) が、データベース ボックスではそれほどではありません (300/秒)。これは単純に、データベース サーバーへの接続を 1 つ開いて再利用したためだと思いますが、Solr クライアント ライブラリの記述方法のおかげで、現在、すべての Solr リクエストが cURL を介して新しい HTTP 接続を開いています。
だから、私の質問は:
- キープアライブ セッションを開くように cURL を作成できますか?
- 接続を再利用するには何が必要ですか? -- cURL ハンドル リソースを再利用するのと同じくらい簡単ですか?
- 特別な cURL オプションを設定する必要はありますか? (例: HTTP 1.1 を強制しますか?)
- cURLキープアライブ接続に関する落とし穴はありますか? このスクリプトは一度に何時間も実行されます。単一の接続を使用できますか、それとも定期的に再接続する必要がありますか?