基本的にMongoDBに接続し、ドキュメントを書き込み、接続を19000回閉じる次のPHPスクリプトがあります。
<?php
for($i=0; $i < 19000; $i++) {
$con = new Mongo("mongodb://localhost:27017");
$db = $con->selectDB('test');
$col = $db->selectCollection('close_wait_test');
$col->insert(array('Test' => 'Value1'));
$con->close();
}
?>
このスクリプトを 1 回実行すると正常に動作しますが、数秒後にスクリプトを実行すると、「要求されたアドレスを割り当てることができません」という例外が発生します。これは、サーバー システムでポートが不足している可能性があるため理解できます。
ただし、 $con->close(); を削除します。データベースに目立った負担をかけることなく、そのスクリプトを何度も実行できます。これは、データベースへの接続が永続的であり、スクリプトで同じ初期接続を再利用するためだと思います。
私が知りたいのは、2 万人以上の異なるユーザーがこのスクリプトの 1 つのループを同時に実行した場合、データベースに何が起こるかということです。たとえば、各ユーザーがデータベースへの接続を 1 つ作成する必要があるため、使用可能な接続が単純になくなるのでしょうか? または、それらのすべてのユーザーが、最初のユーザーによって作成された同じ初期接続を使用しますか?