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

AsyncTcpConnection掉線

buildinghe

使用AsyncTcpConnection測試并發(fā)的時候,多次測試都一樣會在一定時間后沒有心跳連接無效
然而比較有規(guī)律的是每次的剩余有效連接數(shù)都是固定的54個(windows),把代碼放到linux環(huán)境下測試也情況類似
感覺是不是有什么很重要的設(shè)置我遺漏了,求大大拯救~
謝謝

初始代碼:

for ( $i = 0; $i < 200; $i++ )
            {
                $con            = new AsyncTcpConnection('ws://127.0.0.1:2211');
                $con->cust_id   = $i;
                $con->onConnect = function ($con)
                {
                    $con->send("connect");
                    Timer::add(2, function () use ($con)
                    {
                        $con->send("ping");
                    });
                };
                $con->onMessage = function ($con, $msg)
                {

                };
                $con->onClose   = function ($con)
                {
//                  echo $con->cust_id." con close\n";
                };

                $con->connect();
                echo $i, " connections complete\n";
            }

            Timer::add(5, function () use ($worker)
            {
                $time_now = time();
                $n        = 0;
                foreach ( $worker->connections as $connection )
                {
                    //設(shè)置初始時間
                    if ( empty( $connection->lastMessageTime ) )
                    {
                        $connection->lastMessageTime = $time_now;
                        continue;
                    }
                    $interval = $time_now - $connection->lastMessageTime;
                    if ( $interval > 20 )
                    {
//                      echo "[{$time_now}-=\n";
                        $connection->close();
                    }
                    $n++;
                }
                echo date("Y-m-d H:i:s") . "\t" . "total:{$n}\n";
            });

如圖:

圖片
圖片

后來更換linux測試同樣的代碼也是類似的情況,如圖:
圖片

不使用for循環(huán),更換另外一種方式創(chuàng)建連接之后:

function startTest()
        {
            static $count = 0;
            if ( $count >= 1000 )
            {
                return;
            }
            $count++;
            $con            = new AsyncTcpConnection('ws://127.0.0.1:2211');
            $con->cust_id   = $count;
            $con->onConnect = function ($con)
            {
                $this->startTest();
                Timer::add(2, function () use ($con)
                {
                    $con->send("ping");
                });
            };
            $con->onMessage = function ($con, $msg)
            {

            };
            $con->onError   = function ($connection, $code, $msg)
            {
                echo "error $code $msg\n";
            };
            $con->onClose   = function ($con)
            {
//                  echo $con->cust_id." con close\n";
            };

            $con->connect();
            echo $count, " connections complete\n";
        }

圖片

多次測試,連接數(shù)固定剩余127

3995 3 0
3個回答

walkor 打賞

樣式亂了,把所有代碼用附件的方式傳上來給大家運行看看吧

  • 暫無評論
buildinghe

各位大大,測試代碼在這。直接php Task.php。

  • 暫無評論
walkor 打賞

[attach]494[/attach]

我這里Debian系統(tǒng)測試是ok的。
linux系統(tǒng)需要安裝libevent擴展或者event擴展,還需要將系統(tǒng)內(nèi)核優(yōu)化好,參見http://doc3.workerman.net/appendices/kernel-optimization.html,否則單個進程無法打開高于1024個鏈接句柄,因為測試程序是自己連自己,發(fā)起1000個鏈接,實際在當(dāng)前進程打開了2000個鏈接句柄。

另外不要在windows里做這種測試,經(jīng)過很多人驗證,windows系統(tǒng)默認有個256的限制,每個進程最多打開256個鏈接句柄。

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