2013-05-29 58 views
0

我們的設置如下:截斷PHP-HandlerSocket的結果,當值過大

  • 主數據庫服務器,亞馬遜EC2實例m2.xlarge(17GB RAM,CPU 2x3.25ecu)上運行的Percona的5.5.x
  • 運行PHP 5.4
  • 應用服務器(一個或多個),亞馬遜EC2實例m1.large(7.5GB RAM,CPU 2x2ecu)
  • 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,因爲他們建議磁芯* 2,默認值是16.我想反應較慢會比沒有好,但這似乎並沒有做出區別。

php-handlersocket項目看起來已經死了,它本身有點令人驚訝,最近的更新源於一年多前,但似乎沒有任何其他PHP庫可用,所以我被卡住了。

我想知道是否有人有類似的問題,如果有其他庫可用,或者如果我應該探索跳過庫和創建我自己的接口像CURL。

回答

0

因此,最終,與許多問題一樣,我對注重有限的開源項目保持警惕,並決定編寫我自己的基於php sockets的解決方案,並且運行良好。