我们的设置如下:
- 主数据库服务器,运行 Percona 5.5.x 的 Amazon EC2 m2.xlarge 实例(17GB 内存,2x3.25ecu CPU)
- 运行 PHP 5.4 的应用程序服务器、Amazon EC2 m1.large 实例(7.5GB 内存、2x2ecu CPU)
php-handlersocket
PECL 库在这里http://code.google.com/p/php-handlersocket/
在大多数情况下,它可以工作,但是一旦我加载了具有相对流量的应用程序服务器,结果记录具有中等到大值字段的查询就会开始失败。在我们的例子中,两个主要的罪魁祸首是大约 5Kb 的 XML 字符串,以及存储为 5-500Kb 二进制对象的媒体文件。症状是如果我请求 10 个字段并且 XML 在第 8 个字段中,我将得到 7 个带有数据的结果,而第 8 个将是空的,根本不包括 9 和 10。
有一个与此类问题相关的 php-handlersocket 库的报告问题,但是还有一个建议的修复程序,我已经实施并且我认为它有所帮助,但似乎并不完全。问题详细信息和修复在这里http://code.google.com/p/php-handlersocket/issues/detail?id=28
我的 HandlerSocket 设置与默认设置略有不同,我应该设置这些不同吗?
loose_handlersocket_port = 9998
loose_handlersocket_port_wr = 9999
loose_handlersocket_threads = 4
loose_handlersocket_threads_wr = 1
open_files_limit = 65535
我已将默认read
线程数减少到 4,因为他们推荐 CORES * 2,默认值为 16。我认为较慢的响应总比没有好,但这似乎没有什么不同。
该php-handlersocket
项目看起来已经死了,这本身有点令人惊讶,最后一次源更新是一年多以前,但似乎没有任何其他 PHP 库可用,所以我被困住了。
我想知道是否有人遇到过类似的问题,是否有其他可用的库,或者我是否应该探索跳过库并使用 CURL 之类的东西创建自己的界面。