当值太大时,php-handlersocket结果被截断

时间:2013-05-29 19:01:12

标签: php mysql nosql percona handlersocket

我们的设置如下:

  • 运行Percona 5.5.x的主数据库服务器,Amazon EC2 m2.xlarge实例(17GB内存,2x3.25ecu CPU)
  • Application Server(s),运行PHP 5.4的Amazon EC2 m1.large实例(7.5GB内存,2x2ecu CPU)
  • php-handlersocket此处的PECL库http://code.google.com/p/php-handlersocket/

在大多数情况下它可以正常工作,但是一旦我加载具有相对流量的应用服务器,结果就会在结果记录具有中到大值的字段的查询中失败。在我们的例子中,两个主要的罪魁祸首是XML字符串,大约5Kb,媒体文件存储为二进制对象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这样的东西创建我自己的界面。

1 个答案:

答案 0 :(得分:0)

所以最后,和许多问题一样,我对一个注意力有限的开源项目变得谨慎,并决定编写我自己的基于php sockets的解决方案,该方案运行良好。