14 个评论

好奇,想問問原理。
SCF 冷啟動,一直運行著 webman。
然後休眠的時候webman是停止了的。
然後有請求的時候又 運行一次。
請問是這樣的嗎?
adminv

adminv 回复 MarkGo

SCF 可以理解为一个docker 服务节点, 用的你镜像启动 docker, 启动workerman后,开始向9000端口发送 API网关传来的http请求,然后结果通过API网关再给 用户。 时间一长没人调用了,就把你的容器给kill了,如果访问量越来越大,腾讯云会 docker run 容器数量越来越多,来处理请求。 腾讯云SCF容器运行,全局只读,仅/tmp可写
MarkGo

MarkGo 回复 adminv

我刚尝试了,除了业务代码不是send_mail,而是直接改为return response('hello webman');*默认index的,
压测结果
成功率:99.83%
超时数:56
平均耗时:117.84ms
最大耗时:9328ms
请求数:41270
平均TPS:314.34/s
持续时间: 02分 31秒

默认scf下的php-fpm:
成功率:100%
请求数:43146
超时率:0
平均耗时:143.59ms
最大耗时:5555ms
平均TPS:341.18/s
持续时间: 02分 31秒


感觉把webman部署上scf对实际毫无用处....
测试我是用weTest进行压测的,
我个人的理解:

scf拉取了image->部署完->执行webman对9000端口进行监控。
后续有请求或并发加大的时候,scf会同时部署多个webman进行缓解压力。

问题就出在docker部署在其余节点的时候,首次访问导致超时和降低了TPS。

实际场景下也没法直接把webman项目转至scf上,毕竟只有tmp可读取,已有项目改动太大了。

如果有理解错的地方希望指正
感觉说毫无用处略显极端。
我觉得这个模式挺好,部署更简单了,智能横向扩容+webman的高性能 可应对高并发请求。
至于压测才300qps,感觉是哪里遇到瓶颈了,猜测有可能是带宽不够,最好能内网压测。
只有tmp可写这个也好改,软链就解决了。
MarkGo

MarkGo 回复 six

的确可能说的比较极端,
但是tps的压测结果只是api网关的问题,这里只需要对比即可。
上面的压测结果是使用scf+webman的
下面的压测结果是使用scf+phpfpm。

然后你提到的,
“部署更简单了,智能横向扩容+webman的高性能 可应对高并发请求”
其实你就算是普通的phpfpm,在scf上也是 “智能横向扩容”,
而提到的webman的高性能,
实测结果就是把webman部署在scf上并不能获取任何高性能。(参考上述压测结果。

“只有tmp可写这个也好改,软链就解决了。”
现有项目除非存储挂载了去COS/CFS,如果我没记错scf下tmp目的下写入的数据每次都会被清空。

webman的逻辑应该就是首次加载,常驻,从而提升速度。
但是去到SCF上,由于SCF的逻辑是按需加载(php-fpm的思想),所以反而导致webman的性能有所下降。
另外我不是想抬杠,
把webman丢上去无服务函数里执行我之前也有过想法。
但是深入考虑后,觉得自己当时想法根本不够成熟,
这次LZ发了教程,自己刚好还有压测资源,就顺着去做了个测试,
实测结果确实和当初所想一样。
所以我才希望能通过交流来确认是否我做法上或考虑上存在问题,
我上面的压测对比仅仅是针对SCF环境下的因素。

还有我上面一直有说错,SCF上并不是PHPFPM和webman的对比,刚查看了SCF的手册,
上面执行PHP代码是直接通过CLI方式进行的,意味着是webman和PHP CLI的对比了。
如果按手册上面的这个说法,把webman弄上SCF真的就是毫无意义了。
倒不如直接使用SCF的laravel框架
webman的逻辑应该就是首次加载,常驻,从而提升速度。
但是去到SCF上,由于SCF的逻辑是按需加载(php-fpm的思想),所以反而导致webman的性能有所下降。
----------
如果是这样,那确实没啥用处了
adminv

adminv 回复 MarkGo

你好,我刚看到,请移步阿里云测试,腾讯云同学找我了,说他们的冷启动还需要跟进,这种部署的优势,不需要买服务器,节省成本
而且无限横向扩容,单点服务器太累了,
并且,现在腾讯云支持 预支并发了,需要内测申请,我已经测试了,他预留几个已启动的容器给你用,而且你要去看运行耗时,SCF走的api网关 网关经过3次转发,影响实际请求测试,
adminv

adminv 回复 MarkGo

并且,阿里云支持写,腾讯云不久也会支持写。
adminv

adminv 回复 six

晚上我会再次 详细测压,对比腾讯云和阿里云 云函数
adminv

adminv 回复 six

晚上我会再次 详细测压,对比腾讯云和阿里云 云函数
adminv

adminv 回复 six

晚上我会再次 详细测压,对比腾讯云和阿里云 云函数
MarkGo

MarkGo 回复 adminv

您误会我的意思了.
我只是单纯的想对比webman上SCF 和 不使用webman的区别;
就如上面所提到,我认真看完了SCF的手册,发现SCF运行PHP就是通过CLI形式进行的,而不是通过PHP-FPM进行。
在这个场景下的比较已经没有任何意义了。
这就好比
webman:phpcli(常驻)->webman(常驻)->业务流程处理;
php:phpcli(常驻)->业务流程处理
这也印证了我上面提到的,scf上phpcli效率和webman效率相差不大的问题。
adminv

adminv 回复 MarkGo

是的,SCF下就是php-cli运行的,所以 他不能用$_POST等直接来获取 ,必须要按照他的规定来修改入口处理文件,这是代码部署的模式下,

我说的是镜像部署,正常开发就行,不需要兼容入口文件。如果是镜像部署,cli启动是php -S 0.0.0.0 这玩意效率不行,而且 镜像部署中使用webman可以做到,自定义处理协议,在SCF上。

其实 话题偏离了,我想表达是 替换掉服务器

要回复文章请先登录注册