腾讯云SCF镜像部署webman业务

adminv
阅读 860
14个评论

MarkGo

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

  • 暂无评论
adminv

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

  • 暂无评论
MarkGo

我刚尝试了,除了业务代码不是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可读取,已有项目改动太大了。

如果有理解错的地方希望指正

  • 暂无评论
six

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

  • 暂无评论
MarkGo

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

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

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

webman的逻辑应该就是首次加载,常驻,从而提升速度。
但是去到SCF上,由于SCF的逻辑是按需加载(php-fpm的思想),所以反而导致webman的性能有所下降。

  • 暂无评论
MarkGo

另外我不是想抬杠,
把webman丢上去无服务函数里执行我之前也有过想法。
但是深入考虑后,觉得自己当时想法根本不够成熟,
这次LZ发了教程,自己刚好还有压测资源,就顺着去做了个测试,
实测结果确实和当初所想一样。
所以我才希望能通过交流来确认是否我做法上或考虑上存在问题,
我上面的压测对比仅仅是针对SCF环境下的因素。

还有我上面一直有说错,SCF上并不是PHPFPM和webman的对比,刚查看了SCF的手册,
上面执行PHP代码是直接通过CLI方式进行的,意味着是webman和PHP CLI的对比了。
如果按手册上面的这个说法,把webman弄上SCF真的就是毫无意义了。
倒不如直接使用SCF的laravel框架

  • 暂无评论
six

webman的逻辑应该就是首次加载,常驻,从而提升速度。
但是去到SCF上,由于SCF的逻辑是按需加载(php-fpm的思想),所以反而导致webman的性能有所下降。

如果是这样,那确实没啥用处了

  • 暂无评论
adminv

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

  • 暂无评论
adminv

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

  • 暂无评论
adminv

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

  • 暂无评论
adminv

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

  • 暂无评论
adminv

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

  • 暂无评论
MarkGo

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

  • 暂无评论
adminv

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

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

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

  • 暂无评论

adminv

1264
积分
0
获赞数
0
粉丝数
2021-08-06 加入