亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5245 | 回復: 16
打印 上一主題 下一主題

php gearmand 大并發(fā)的哥們關注下,謝謝 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-09-24 18:11 |只看該作者 |倒序瀏覽
php gearmand 大并發(fā)后報這個錯誤,哪個英雄哥遇到過,分享一下解決經驗。。謝謝!
>Message:  GearmanClient::doBackground(): gearman_con_read:lost connection to server (104)

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
2 [報告]
發(fā)表于 2012-09-24 18:38 |只看該作者
服務端連接關閉, 看一下Gearmand服務端的配置, 是否限制了連接數.

論壇徽章:
0
3 [報告]
發(fā)表于 2012-09-25 09:12 |只看該作者
本帖最后由 sickcat2004 于 2012-09-25 09:13 編輯
linux_c_py_php 發(fā)表于 2012-09-24 18:38
服務端連接關閉, 看一下Gearmand服務端的配置, 是否限制了連接數.


geamand 沒有配置文件

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
4 [報告]
發(fā)表于 2012-09-25 12:28 |只看該作者
看了一下, 是一個rpc extension, 你的worker進程開了幾個? 單循環(huán)Loop accept?

論壇徽章:
0
5 [報告]
發(fā)表于 2012-09-25 17:21 |只看該作者
linux_c_py_php 發(fā)表于 2012-09-25 12:28
看了一下, 是一個rpc extension, 你的worker進程開了幾個? 單循環(huán)Loop accept?


謝謝兄臺的更近,比較忙沒有及時反饋,慚愧!

gearmand 3臺,跑在centos 5.5下
每臺6個workers,
一共18個,當我并發(fā)在2500以上以后,
出現 本出題php警告。。。。
我是用php 前端curl 請求 php worker 腳本處理的。。。。
我懷疑是不是機器資源不夠,但是 top cup 都在65%以下!
搜索了各大論壇。。相關的討論幾乎沒有,
沒時間看geamand的源代碼,我以為它一直很穩(wěn)定!

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
6 [報告]
發(fā)表于 2012-09-25 17:33 |只看該作者
為什么php是用curl請求php worker呢, gearmand不是有開發(fā)接口嗎, 你這個中途又走了什么中間代理嗎

論壇徽章:
0
7 [報告]
發(fā)表于 2012-09-25 18:33 |只看該作者
linux_c_py_php 發(fā)表于 2012-09-25 17:33
為什么php是用curl請求php worker呢, gearmand不是有開發(fā)接口嗎, 你這個中途又走了什么中間代理嗎


oh, 是這樣,我這是一個計數器,類似文章點擊率或者微博粉絲數目什么的,是提供 web serviec api的方式:


前端開發(fā)人員 功過  ajax,curl的get或者post方式傳送數據給php腳本服務端,然后我在服務端腳本里接受參數
,我上代碼吧!
  1. class Hit extends CI_Controller {
  2.         private $_data=array();

  3.         private function _echo($msg="ok",$errno=1,$data=array()){
  4.                 $re = array();
  5.                 $re['msg']=$msg;
  6.                 $re['state']=$errno;
  7.                 $re['data']=$data;
  8.                 $this->re_json($this->_data['callback'],json_encode($re));
  9.                 exit;
  10.         }
  11.         private function re_json($callback,$json_re)
  12.         {
  13.                 //__DEBUG__ AND $json_re="'".$json_re."'";
  14.                 $this->_data['fe_debug'] AND $json_re="'".$json_re."'";
  15.                 if($callback){
  16.                         echo $callback."(".$json_re.")";
  17.                 }else{
  18.                         echo $json_re;
  19.                 }   
  20.         }

  21.         private function init(){
  22.                 $this->_data['callback']="";
  23.                 $this->_data['platform_name']="";
  24.                 $this->_data['platform_id']=0;
  25.                 $this->_data['object_id'] =0;
  26.                 $this->_data['event_id'] = 0;
  27.                 $this->_data['fe_debug']=0;

  28.         }
  29.         public function insert(){//new_click
  30.                 $this->init();
  31.                 isset($_REQUEST['callback']) AND $this->_data['callback']=$_REQUEST['callback'];
  32.                 isset($_REQUEST['debug']) AND $this->_data['fe_debug']=intval($_REQUEST['debug']);
  33.                 $data = array();
  34.                 isset($_REQUEST['callback']) AND $data= $this->input->get();
  35.                 $data OR $data = $this->input->post();
  36.                 $data OR $data = $this->uri->uri_to_assoc();
  37.                 $data = $this->check_data($data);
  38.                  $data_=array();
  39.                 $data_['platform_id']=$data['platform_id'];
  40.                 $data_['object_id']=$data['object_id'];
  41.                 $data_['event_id']=$data['event_id'];
  42.                 $this->in_queue($data_);

  43.         }
  44.         private function check_data($data){
  45.                 if(empty($data) OR !is_array($data)){
  46.                         $this->_echo("no any data","-400");
  47.                 }
  48.                 $event_id=0;
  49.                 $object_id=0;
  50.                 $platform_name="";
  51.                 extract($data);
  52.                 //isset($callback) AND $this->_data['callback']=$callback;
  53.                 isset($platform_name) AND $this->_data['platform_name']=$platform_name;
  54.                 isset($object_id)  AND  $this->_data['object_id']=intval($object_id);
  55.                 isset($event_id) AND   $this->_data['event_id']=intval($event_id);
  56.                 if(!$this->_data['platform_name']){
  57.                         $this->_echo("platform_name is NULL",-5);
  58.                 }
  59.                 //print_r($event_id);
  60.                 global $g_platform_list,$g_event_list;
  61.                 if(!$platform_id=array_search($platform_name,$g_platform_list)){
  62.                         $this->_echo("platform_name error",-1);
  63.                 }
  64.                 if(!array_key_exists( intval($event_id),$g_event_list) ){
  65.                         $this->_echo("event_id error",-2);
  66.                 }
  67.                 if(!intval($object_id)){
  68.                         $this->_echo("object_id error",-3);
  69.                 }
  70.                 $this->_data['platform_id']=$platform_id;
  71.                 return $this->_data;
  72.         }
  73.         private function in_queue($data){

  74.                 global $g_gearman;
  75.                 $client = new GearmanClient();
  76.                 foreach($g_gearman as $key=>$v){
  77.                         $tmp_array = explode(":",$v);
  78.                         $client->addServer($tmp_array[0],$tmp_array[1]);
  79.                 }
  80.                 $str = json_encode($data);
  81.                 $client->doBackground("in_queue_now",$str);
  82.                 if($client->returnCode() != GEARMAN_SUCCESS){
  83.                         $this->_echo("gearman error",-500);
  84.                 }
  85.                 __DEBUG__ AND  $this->_echo("ok",1,$data);
  86.                 __DEBUG__ OR   $this->_echo("ok",1);
  87.         }
  88. }
復制代碼
  1. private function in_queue($data){

  2.                 global $g_gearman;
  3.                 $client = new GearmanClient();
  4.                 foreach($g_gearman as $key=>$v){
  5.                         $tmp_array = explode(":",$v);
  6.                         $client->addServer($tmp_array[0],$tmp_array[1]);
  7.                 }
  8.                 $str = json_encode($data);
  9.                 $client->doBackground("in_queue_now",$str);
  10.                 if($client->returnCode() != GEARMAN_SUCCESS){
  11.                         $this->_echo("gearman error",-500);
  12.                 }
復制代碼
look ::::
in_queue 這個私有成員方法里面加入geamand服務器然后 處理的,然后另外一臺服務器在從消息隊列里面取出數據插入mongo,謝謝跟進!

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
8 [報告]
發(fā)表于 2012-09-25 18:38 |只看該作者
本帖最后由 linux_c_py_php 于 2012-09-25 18:39 編輯

知道了, 那你先增加worker進程數, 壓力測試一下QPS到多少不響應.

這樣實現不行就不能用這個擴展了, 這個gearmand和zeromq工作模式應該是類似的, 沒有中心服務器, 可以考慮使用zeromq來做這件事, 如果你能接受有中心服務器的MQ, 可以選擇RabbitMQ.

論壇徽章:
0
9 [報告]
發(fā)表于 2012-09-25 18:43 |只看該作者
linux_c_py_php 發(fā)表于 2012-09-25 18:38
知道了, 那你先增加worker進程數, 壓力測試一下QPS到多少不響應.

這樣實現不行就不能用這個擴展了, 這個 ...

  多謝建議,我明天用webbench 壓一下,
看看能抗多少。。。不行的話,
估計要考慮水平擴展worker和gearmand server ,
現在換另外的消息隊列,估計boss不同意了。。。要上線了!

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
10 [報告]
發(fā)表于 2012-09-25 18:45 |只看該作者
gearmand server 是有中心服務器的?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯網協(xié)會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP