国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

經(jīng)常報stream_select(): You MUST recompile PHP with a larger value of FD_SETSIZE 錯誤

freely

服務端我是使用Workerman+GatewayWorker+TP5組合使用。
在TP5的runtime>log下經(jīng)常收到
截圖
這樣的錯誤。
這種會對服務端有影響嗎?如何處理呢?

1841 6 0
6個回答

walkor 打賞

連接數(shù)超過1024要裝event擴展

  • freely 2022-08-25

    event擴展有安裝了啊,在服務器上使用php -m 查了下,有裝event擴展的?然道安裝沒成功?如何確定event安裝成功呢

  • walkor 2022-08-25

    執(zhí)行php start.php status ,有select字樣說明沒使用event擴展,有可能是裝了沒重啟。有event字樣說明使用了event擴展

  • freely 2022-08-25

    執(zhí)行了。結果在下面的圖片,沒看到select字樣,有一個event-loop:\Workerman\Events\React\ExtEventLoop

freely

截圖
截圖
這樣看應該是有裝成功吧?

  • walkor 2022-08-25

    整個服務一共多少個gateway進程,1000多?

  • freely 2022-08-25

    沒。gateway進程才8個左右而以。這個我是根據(jù)服務器的CPU核數(shù)設置的。

  • freely 2022-08-25

    有兩塊。一塊是websocket,一個是自定義TCP協(xié)議的,兩個都各8個左右而以。

  • walkor 2022-08-25

    這個沒遇到過,看起來是業(yè)務進程和gateway建立起了1314個連接,按照你的配置應該最多建立16個連接才對。
    猜測是調(diào)用了某個接口,里面包含了大量client_id,這些client_id里的ip和端口信息是過時的或者是錯誤的。

  • freely 2022-08-26

    這個錯,基本上都是在我重啟服務端時出現(xiàn)的,我客戶端是使用C#寫的,現(xiàn)在大概有30-50個左右,客戶端如果有連接上后會先觸發(fā)注冊登錄操作,登錄成功后,就開始大量發(fā)送數(shù)據(jù)給服務端?;蚺c服務端交換數(shù)據(jù)處理。有比較頻繁的操作數(shù)據(jù)庫。不知與此有關否?如果是,如何減少它的壓力呢?

  • walkor 2022-08-26

    這個問題沒遇到過,不確認和什么有關

freely

這段時間跟蹤分析發(fā)現(xiàn),我的這幾個問題,全部都是由于這個引起的
我在onconnect,onclose等能找到的相關聯(lián)的地方都加上日記記錄了,發(fā)現(xiàn)接收客戶端發(fā)過來的信息都是正常的。
這個是在接收ping心跳信息時并且是在服務端重啟后的剛開始一段時間內(nèi)就會報這個錯。但是過段時間就正常了。
還有這兩個在半夜2點左右時接收ping心跳數(shù)據(jù)時就出錯了。

這個調(diào)用某個接口包含大量client_id這種的,如何去調(diào)試呢?在業(yè)務代碼上如果增加調(diào)試方式?
還是說只能等出這個錯時,執(zhí)行php start.php status去跟蹤查看原因?
截圖這是心跳的處理,心跳數(shù)據(jù)是每隔10秒一個,數(shù)據(jù)內(nèi)容也不大就一些簡單的驗證而以。

  • walkor 2022-11-29

    報錯里有文件及行數(shù),在那里記錄日志,看下報錯時stream_select傳遞的參數(shù)是什么,1000多個IP和端口是什么

小W

確定不是因為ExtEventLoop有關?

  • 暫無評論
freely

運行php start.php status后出現(xiàn)幾個busy的進程
通過strace -ttp 進程id發(fā)現(xiàn)好像是卡在這里
截圖

運行l(wèi)sof -nPp查看出現(xiàn)busy進程的顯示
截圖
發(fā)現(xiàn)好多是連接9200的,這個是我ES服務的
我ES只有插入或更新數(shù)據(jù)時才用到,是卡在插入這里?但是我看了是插入有成功的。
這個我ES的代碼

<?php

namespace app\common\library;

use app\admin\library\Common;
use Elasticsearch\ClientBuilder;
use think\Exception;

class EsUtils{
    protected $dbName;
    protected $tbName;
    protected $client;
    public function __construct($dbName='vbox_wechat_message',$tbName='_doc',$hostUrl=[[
        'host'=>'8.8.8.8',
        'port'=>9200,
        'scheme'=>'http',
        'user'=>'elastic',
        'pass'=>'45454'
    ]])
    {
        //try{
            $this->dbName=$dbName;
            $this->tbName=$tbName;
            $this->client=ClientBuilder::create()->setHosts($hostUrl)->build();
        /*}catch (Exception $ex){
            $r=$ex->getMessage();
            echo json_encode($r);
        }*/
    }

    private function object2array($object){
        if(is_object($object)){
            foreach ($object as $key=>$value){
                $array[$key]=$value;
            }
        }else{
            $array=$object;
        }
        return $array;
    }

    /*
     * 初始化params參數(shù)
     * #return array
     * */
    protected function initParams(){
        return [
            'index'=>$this->dbName,         ##索引:數(shù)據(jù)庫
            //'type'=>$this->tbName,          ##類型:數(shù)據(jù)表,7.0以后不再需要指定此值了,已默認為_doc
        ];
    }

    /*
     * 把數(shù)據(jù)庫里的數(shù)據(jù)導入ES
     * $param $data
     * */
    public function add($client_id,$data){
        try{
            $params=$this->initParams();
            if(isset($data['id'])){
                $params['id']=$data['id'];
            }
            $params['body']=$data;
            $r=$this->client->index($params);
        }catch (Exception $ex){
            $r=$ex->getMessage();
            Common::logssave([
                '$client_id'=>$$client_id,
                'admin_id'=>0,
                'msg'=>'信息入到ES庫里時出錯',
                'data'=>json_encode($data),
                'errlogs'=>json_encode($r),
            ]);
        }
        return $r;
    }

    public function edit($client_id,$data){
        try{
            $params=$this->initParams();
            if(isset($data['id'])){
                $params['id']=$data['id'];
                unset($data['id']);
            }
            $params['body']=[
                'doc'=>$data
            ];
            $r=$this->client->update($params);
        }catch (Exception $ex){
            $r=$ex->getMessage();
            Common::logssave([
                'client_id'=>$client_id,
                'admin_id'=>0,
                'msg'=>'修改ES數(shù)據(jù)時出錯了',
                'data'=>json_encode($data),
                'errlogs'=>json_encode($r),
            ]);
        }
        return $r;
    }
}

調(diào)用是使用

    public static function savepyqMsg($client_id,$data){
        if($data){
            $data['id']=$data['object_id'];
            $es=new EsUtils('moments');
            $resultData=$es->add($client_id,$data);
        }
    }

    //保存用戶留言數(shù)據(jù)
    public static function savemessage($client_id,$data){
        try {
            if($data){
                $data['id']=$data['msgid'];
                $es=new EsUtils();
                $resultData=$es->add($client_id,$data);
            }
        }catch (Exception $ex){
            print_r('保存聊天數(shù)據(jù)到ES里出錯:'.$ex->getMessage());
            print_r(PHP_EOL);
            Common::logssave([
                'client_id'=>$client_id,
                'admin_id'=>0,
                'msg'=>'保存聊天數(shù)據(jù)到ES里出錯',
                'data'=>json_encode($data,true),
                'errlogs'=>'出錯內(nèi)容:'.$ex->getMessage(),
            ]);
        }
    }

在保存時,也沒出現(xiàn)啥錯誤,都是正常的。

  • 小W 2022-12-03

    是不是client失效了

  • freely 2022-12-03

    沒有,還可以使用這個client向客戶端發(fā)送信息?;蚴盏娇蛻舳税l(fā)過來的信息。

freely

分析了連接信息后,應該是與ES連接,操作ES數(shù)據(jù)后沒有釋放導致的。做了修改后,這幾天沒再出現(xiàn)這問題了。
感謝各位的幫助,謝謝。

年代過于久遠,無法發(fā)表回答
??