用了 Swoole,请求有时候 600 多 ms ,如何优化呢?

2020-01-30 19:32:11 +08:00
 baoshu

Swoole 代码如下,仅仅是输出了 Hello World

//创建 Server 对象,监听 127.0.0.1:9501 端口
$serv = new Swoole\Server("127.0.0.1", 9501); 

//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) {  
    echo "Client: Connect.\n";
});

//监听数据接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ".$data);
});

//监听连接关闭事件
$serv->on('Close', function ($serv, $fd) {
    echo "Client: Close.\n";
});

//启动服务器
$serv->start(); 

然后用浏览器查看请求耗时,发现大部分是 60ms 左右。但是有时候高达 600 多 ms,太不正常的。 访问是用外网 IP+端口,访问的。 服务器用的腾讯云,系统是 Linux CentOS。

RT:

有没有大佬知道如何优化的哈。

2056 次点击
所在节点    问与答
8 条回复
baoshu
2020-01-30 19:34:36 +08:00
服务器是 1 核 2G 的。
iamfirst
2020-01-30 20:04:07 +08:00
和网络环境有关吧
eryueyu
2020-01-30 20:22:47 +08:00
查服务器性能占用,网络环境
KasuganoSoras
2020-01-30 20:46:30 +08:00
你贴的这段代码和你截图里的根本不一样吧。。
baoshu
2020-01-30 21:47:51 +08:00
@KasuganoSoras
确实是

~~~
<?php
$http = new swoole_http_server("0.0.0.0", 9501);

$http->on("start", function ($server) {
echo "Swoole http server is started at http://127.0.0.1:9501\n";
});

$http->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});

$http->start();
~~~
baoshu
2020-01-30 21:52:55 +08:00
@eryueyu @iamfirst
大部分时候都是 30-60ms,极少数情况是 600ms 左右。(出现频率可能是 30/1 样式,不固定)
看了 CPU 内存和网络都正常。
KasuganoSoras
2020-01-31 06:53:19 +08:00
@baoshu #6 那大概就是机器性能或者网络问题了,腾讯云应该和阿里云一样会压制低配机器性能的……不过我觉得更大的可能是因为网络,你可以试下在服务器上用 ab 或者 wrk 自行压测一下看看
iamfirst
2020-01-31 20:07:49 +08:00
本地环境和网络一般比较稳定,可以在本地用 ab 测试数千百次,如果本地的测试结果比较稳定,相差不大。就基本可以确定是腾讯云的网络环境问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/641062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX