2012-09-05 62 views
2

我刚刚运行了一个测试,通过nginx/php fastcgi在我的开发机器上花费了大约2.1秒时间创建了1000个非持久性连接到mongodb。然后我使用持续连接尝试相同的测试,结果相同。我认为我读了一些地方,现在始终启用PHP驱动程序中的持久性。接下来,我尝试存储与APC的连接,这会在第一次请求后产生7-9ms的响应时间。现在,我在这里想知道的几件事情:Mongodb和PHP APC

  1. 有几乎从来没有一个时候我能想到的,我会想一次创建我的应用程序建立多个连接,并与持久连接我理解,mongo驱动程序需要创建新的连接。

  2. 创建单个连接似乎与将存储的连接对象从APC拉出大致相同。缓存连接对象是否真的提供了一个好处?

  3. 缓存连接我当然知道仍然需要进行某种检查,看看它是否仍然是有效的连接..每次执行此检查时,我都会怀疑它是否会否定性能增益(如果有的话)从缓存中拉出来。

我似乎无法真的找到任何真正涵盖这些的材料,所以我假设这是因为我对我的理解感到困惑。有没有人对此进行过实验?

谢谢!

回答

1

首先,据我所知,APC在存储数据的同时序列化数据。因此将任何连接存储在APC中都没有任何意义。

然后,persistend连接将被php进程重用,用于各种请求。因此,PHP进程将收到的每个请求都将重新建立非持久连接。

+0

是的,这是关于我来到的结论。持久性已经为你管理,但是我很好奇它是否会给予任何性能好处,从内存中拉出对象,并询问驱动程序连接是否存在,然后重新建立连接对象。 – Xealgo