共被编辑 6 次

版本 更新时间 贡献者 编辑原因 操作
#r6 6月5日 新亮1736 更新问题 查看

Swoole 中关于 swoole_websocket_server 压测的问题。

Swoole 版本:4.3

对 swoole_websocket_server 压测时,使用这个方法可行吗?

//代码片段

$this->concurrency = 100;
$this->request     = 100000;

go(function () {
    for ($c = $this->concurrency; $c--;) {
        $cli = new \Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
        $ret = $cli->upgrade('/');
        if ($ret) {
            while ($this->requested < $this->request) {
                $this->push($cli);
                $cli->recv();
            }
        }
    }
});

官方使用的 swoole_http_client 在 4.3 版本移除了。

另外:

使用 Task 或 不使用 Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?

//使用 Task 代码
$this->serv->on('message', function ($serv, $frame) {
    $serv->task($frame->data);
});

$this->serv->on('task', function ($serv, $task) {
    foreach ($serv->connections as $fd) {
        $connectionInfo = $serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $serv->push($fd, $task->data);
        }
    }
});
//未使用Task代码
$this->serv->on('message', function ($server, $frame) {
    foreach ($this->serv->connections as $fd) {
        $connectionInfo = $this->serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $server->push($fd, $frame->data);
        }
    }
});

机器信息

Mac 上安装的 Parallels Desktop 虚拟机

系统:Ubuntu 16.04.3 LTS

内存:

  • 数量:1
  • 核数:2

CPU:

  • 数量:1
  • 大小:2G

Concurrency:100
Request num:100000
Success num:100000
Total time:8.9364
Request per second:11190

请前辈们指点,这个量级有问题吗?

感谢!

#r5 6月5日 新亮1736 更新问题 查看

Swoole 中关于 swoole_websocket_server 压测的问题。

Swoole 版本:4.3

对 swoole_websocket_server 压测时,使用这个方法可行吗?

//代码片段

$this->concurrency = 100;
$this->request     = 100000;

go(function () {
    for ($c = $this->concurrency; $c--;) {
        $cli = new \Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
        $ret = $cli->upgrade('/');
        if ($ret) {
            while ($this->requested < $this->request) {
                $this->push($cli);
                $cli->recv();
            }
        }
    }
});

官方使用的 swoole_http_client 在 4.3 版本移除了。

另外:

使用 Task 或 不使用 Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?

//使用 Task 代码
$this->serv->on('message', function ($serv, $frame) {
    $serv->task($frame->data);
});

$this->serv->on('task', function ($serv, $task) {
    foreach ($serv->connections as $fd) {
        $connectionInfo = $serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $serv->push($fd, $task->data);
        }
    }
});
//未使用Task代码
$this->serv->on('message', function ($server, $frame) {
    foreach ($this->serv->connections as $fd) {
        $connectionInfo = $this->serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $server->push($fd, $frame->data);
        }
    }
});

机器信息

Mac Parallels Desktop 虚拟机

系统:Ubuntu 16.04.3 LTS

内存:

  • 数量:1
  • 核数:2

CPU:

  • 数量:1
  • 大小:2G

Concurrency:100
Request num:100000
Success num:100000
Total time:8.9364
Request per second:11190

请前辈们指点,这个量级有问题吗?

感谢!

#r4 6月5日 新亮1736 更新问题 查看

Swoole 中关于 swoole_websocket_server 压测的问题。

Swoole 版本:4.3

对 swoole_websocket_server 压测时,使用这个方法可行吗?

//代码片段

$this->concurrency = 100;
$this->request     = 100000;

go(function () {
    for ($c = $this->concurrency; $c--;) {
        $cli = new \Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
        $ret = $cli->upgrade('/');
        if ($ret) {
            while ($this->requested < $this->request) {
                $this->push($cli);
                $cli->recv();
            }
        }
    }
});

官方使用的 swoole_http_client 在 4.3 版本移除了。

另外:

使用 Task 或 不使用 Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?

//使用 Task 代码
$this->serv->on('message', function ($serv, $frame) {
    $serv->task($frame->data);
});

$this->serv->on('task', function ($serv, $task) {
    foreach ($serv->connections as $fd) {
        $connectionInfo = $serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $serv->push($fd, $task->data);
        }
    }
});
//未使用Task代码
$this->serv->on('message', function ($server, $frame) {
    foreach ($this->serv->connections as $fd) {
        $connectionInfo = $this->serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $server->push($fd, $frame->data);
        }
    }
});

请前辈们指点 ~

感谢!

#r3 6月5日 新亮1736 更新问题 查看

Swoole 中关于 swoole_websocket_server 压测的问题。

Swoole 版本:4.3

对 swoole_websocket_server 压测时,使用这个方法可行吗?

//代码片段

$this->concurrency = 100;
$this->request     = 100000;

go(function () {
    for ($c = $this->concurrency; $c--;) {
        $cli = new \Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
        $ret = $cli->upgrade('/');
        if ($ret) {
            while ($this->requested < $this->request) {
                $this->push($cli);
                $cli->recv();
            }
        }
    }
});

官方使用的 swoolehttpclient 在 4.3 版本移除了。

另外:

使用 Task 或 不使用 Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?

//使用 Task 代码
$this->serv->on('message', function ($serv, $frame) {
    $serv->task($frame->data);
});

$this->serv->on('task', function ($serv, $task) {
    foreach ($serv->connections as $fd) {
        $connectionInfo = $serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $serv->push($fd, $task->data);
        }
    }
});
//未使用Task代码
$this->serv->on('message', function ($server, $frame) {
    foreach ($this->serv->connections as $fd) {
        $connectionInfo = $this->serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $server->push($fd, $frame->data);
        }
    }
});

请前辈们指点 ~

感谢!

#r2 6月5日 新亮1736 更新问题 查看

Swoole 中关于 swoole_websocket_server 压测的问题。

Swoole 版本:4.3

对 swoole_websocket_server 压测时,使用这个方法可以行吗?

//代码片段

$this->concurrency = 100;
$this->request     = 100000;

go(function () {
    for ($c = $this->concurrency; $c--;) {
        $cli = new \Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
        $ret = $cli->upgrade('/');
        if ($ret) {
            while ($this->requested < $this->request) {
                $this->push($cli);
                $cli->recv();
            }
        }
    }
});

官方使用的 swoolehttpclient 在 4.3 版本移除了。

另外:

使用 Task 或 不使用 Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?

//使用 Task 代码
$this->serv->on('message', function ($serv, $frame) {
    $serv->task($frame->data);
});

$this->serv->on('task', function ($serv, $task) {
    foreach ($serv->connections as $fd) {
        $connectionInfo = $serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $serv->push($fd, $task->data);
        }
    }
});
//未使用Task代码
$this->serv->on('message', function ($server, $frame) {
    foreach ($this->serv->connections as $fd) {
        $connectionInfo = $this->serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $server->push($fd, $frame->data);
        }
    }
});

请前辈们指点 ~

感谢!

#r1 6月5日 新亮1736 创建问题 查看

Swoole 中关于 swoole_websocket_server 压测的问题。

Swoole 版本:4.3

对 swoole_websocket_server 压测时,使用这个方法可以行吗?

//代码片段

$this->concurrency = 100;
$this->request     = 100000;

go(function () {
    for ($c = $this->concurrency; $c--;) {
        $cli = new \Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
        $ret = $cli->upgrade('/');
        if ($ret) {
            while ($this->requested < $this->request) {
                $this->push($cli);
                $cli->recv();
            }
        }
    }
});

官方使用的 swoolehttpclient 在 4.3 版本移除了。

另外:

使用 Task 或 不适用 Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?

//使用 Task 代码
$this->serv->on('message', function ($serv, $frame) {
    $serv->task($frame->data);
});

$this->serv->on('task', function ($serv, $task) {
    foreach ($serv->connections as $fd) {
        $connectionInfo = $serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $serv->push($fd, $task->data);
        }
    }
});
//未使用Task代码
$this->serv->on('message', function ($server, $frame) {
    foreach ($this->serv->connections as $fd) {
        $connectionInfo = $this->serv->connection_info($fd);
        if (isset($connectionInfo['websocket_status']) && intval($connectionInfo['websocket_status']) == 3) {
            $server->push($fd, $frame->data);
        }
    }
});

请前辈们指点 ~

感谢!