https://hu60.cn/q.php/bbs.topic.101245.html
好奇,想問問原理。 SCF 冷啟動,一直運行著 webman。 然後休眠的時候webman是停止了的。 然後有請求的時候又 運行一次。 請問是這樣的嗎?
SCF 可以理解为一个docker 服务节点, 用的你镜像启动 docker, 启动workerman后,开始向9000端口发送 API网关传来的http请求,然后结果通过API网关再给 用户。 时间一长没人调用了,就把你的容器给kill了,如果访问量越来越大,腾讯云会 docker run 容器数量越来越多,来处理请求。 腾讯云SCF容器运行,全局只读,仅/tmp可写
我刚尝试了,除了业务代码不是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可写这个也好改,软链就解决了。
的确可能说的比较极端, 但是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框架
如果是这样,那确实没啥用处了
你好,我刚看到,请移步阿里云测试,腾讯云同学找我了,说他们的冷启动还需要跟进,这种部署的优势,不需要买服务器,节省成本 而且无限横向扩容,单点服务器太累了, 并且,现在腾讯云支持 预支并发了,需要内测申请,我已经测试了,他预留几个已启动的容器给你用,而且你要去看运行耗时,SCF走的api网关 网关经过3次转发,影响实际请求测试,
并且,阿里云支持写,腾讯云不久也会支持写。
晚上我会再次 详细测压,对比腾讯云和阿里云 云函数
您误会我的意思了. 我只是单纯的想对比webman上SCF 和 不使用webman的区别; 就如上面所提到,我认真看完了SCF的手册,发现SCF运行PHP就是通过CLI形式进行的,而不是通过PHP-FPM进行。 在这个场景下的比较已经没有任何意义了。 这就好比 webman:phpcli(常驻)->webman(常驻)->业务流程处理; php:phpcli(常驻)->业务流程处理 这也印证了我上面提到的,scf上phpcli效率和webman效率相差不大的问题。
是的,SCF下就是php-cli运行的,所以 他不能用$_POST等直接来获取 ,必须要按照他的规定来修改入口处理文件,这是代码部署的模式下,
我说的是镜像部署,正常开发就行,不需要兼容入口文件。如果是镜像部署,cli启动是php -S 0.0.0.0 这玩意效率不行,而且 镜像部署中使用webman可以做到,自定义处理协议,在SCF上。
其实 话题偏离了,我想表达是 替换掉服务器
好奇,想問問原理。
SCF 冷啟動,一直運行著 webman。
然後休眠的時候webman是停止了的。
然後有請求的時候又 運行一次。
請問是這樣的嗎?
SCF 可以理解为一个docker 服务节点, 用的你镜像启动 docker, 启动workerman后,开始向9000端口发送 API网关传来的http请求,然后结果通过API网关再给 用户。 时间一长没人调用了,就把你的容器给kill了,如果访问量越来越大,腾讯云会 docker run 容器数量越来越多,来处理请求。 腾讯云SCF容器运行,全局只读,仅/tmp可写
我刚尝试了,除了业务代码不是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可写这个也好改,软链就解决了。
的确可能说的比较极端,
但是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的性能有所下降。
如果是这样,那确实没啥用处了
你好,我刚看到,请移步阿里云测试,腾讯云同学找我了,说他们的冷启动还需要跟进,这种部署的优势,不需要买服务器,节省成本
而且无限横向扩容,单点服务器太累了,
并且,现在腾讯云支持 预支并发了,需要内测申请,我已经测试了,他预留几个已启动的容器给你用,而且你要去看运行耗时,SCF走的api网关 网关经过3次转发,影响实际请求测试,
并且,阿里云支持写,腾讯云不久也会支持写。
晚上我会再次 详细测压,对比腾讯云和阿里云 云函数
您误会我的意思了.
我只是单纯的想对比webman上SCF 和 不使用webman的区别;
就如上面所提到,我认真看完了SCF的手册,发现SCF运行PHP就是通过CLI形式进行的,而不是通过PHP-FPM进行。
在这个场景下的比较已经没有任何意义了。
这就好比
webman:phpcli(常驻)->webman(常驻)->业务流程处理;
php:phpcli(常驻)->业务流程处理
这也印证了我上面提到的,scf上phpcli效率和webman效率相差不大的问题。
是的,SCF下就是php-cli运行的,所以 他不能用$_POST等直接来获取 ,必须要按照他的规定来修改入口处理文件,这是代码部署的模式下,
我说的是镜像部署,正常开发就行,不需要兼容入口文件。如果是镜像部署,cli启动是php -S 0.0.0.0 这玩意效率不行,而且 镜像部署中使用webman可以做到,自定义处理协议,在SCF上。
其实 话题偏离了,我想表达是 替换掉服务器