我有以下的PHP脚本基本上连接到MongoDB的,写一个文档,然后关闭连接19000次:与MongoDB的连接没有关闭时会发生什么?
<?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();
}
?>
运行此脚本一次工作正常,但如果我几秒钟后运行该脚本,我得到'无法分配请求的地址'异常,这是可以理解的,因为服务器系统可能用完了端口。
但是,如果我删除$ con> close();我可以反复运行该脚本,而不会对数据库造成任何明显的压力。我假设这是因为连接到数据库是持久的,并重复使用脚本上的相同初始连接。
我想知道的是,如果20k +不同的用户同时运行这个脚本的1个循环,那么数据库会发生什么?例如可用连接是否会因为每个用户需要创建一个到数据库的连接而用完?或者是否所有这些用户都使用第一个用户创建的相同初始连接?
感谢您的解释! – 2012-04-16 14:19:42