我们有一组四个Web应用程序(C#,ASP.NET,NHibernate)和一些用于共享Northscale实例的服务。 我们已经升级到了Membase,在这一点上,我们实际上能够开始有效地使用NHibernate的二级caching。 但是,一旦我们将应用程序投入生产,memcache服务停止在端口11211上监听telnet,pipe理界面显示它正在使用9.99k连接。 根据我们的数据库中的stream量来判断,我们认为应该发生下面的一个或多个步骤。 在这两种情况下,服务器都位于Windows 2008服务器上。
1)我们应该允许更多的连接到服务器。 据称这是通过使用-c参数调用可执行文件完成的。 实际上,在我们的机器上,当我们尝试这个时,我们得到一个错误,指出它不能加载default_engine.so。 2)我们应该减less我们的应用程序使用的池大小。 目前,主要的Web应用程序(其中有许多实例运行不同的客户端),有一个大小介于10到100之间的连接池。 3)我们需要考虑这是否是一个networking饱和的问题。 根据pipe理控制台,我们有足够的RAM。 所有的stream量都可能在Rackspace的一些硬件上淹没了吗?
还有其他明显的问题来源,我们可以忽略吗?
看起来这是membase provider的一个问题。 显然它是为我们的应用程序中的每个实体创build单独的客户端(有一大堆的废话)。 通过我们有的网站数量乘以这个问题,麻烦很容易理解。 另一个开发者对代码进行了调整,改变了分配策略。 现在它运行顺利。