# 微信云托管开发常识
当你进行前期开发测试,以及前后端联调前,可以先学习下面常识,有助于事半功倍。
# 云托管使用前提
微信云托管暂不支持以下场景:
- 当前仅支持 http 协议,通过域名调用服务。不支持tcp/udp/mqtt等其他协议;
- 不支持通过公网 ip 访问服务;
- 不支持部署Docker Compose;
- 不支持接入WAF;
- 不支持一个服务开启多个监听端口;
- 不支持用来部署数据库/Redis等有状态服务。
# 客户端常识
- 小程序/公众号中
CallContainer
超时时间不得超过15s,请注意控制请求耗时。 - 如果你只是在小程序或者公众号中
CallContainer
调用,可关闭公网访问,杜绝DDos攻击。 CallContainer
请求大小限制100K
,请求中不建议包含图片,可通过对象存储处理。- 公网访问正常但小程序/公众号访问报错,优先检查代码中处理微信
header/openid
相关逻辑是否有问题。 - 小程序/公众号可使用
CallContainer
,无需域名,因此不需要在mp管理后台配置服务器域名,从而一开始就无需申请域名,也无需备案。 - 小程序/公众号使用
CallContainer
,后端服务可以直接从http header中获取openid等信息。 - 微信云托管对公网域名不具备安全防护能力(包括默认公网域名和自定义域名),请谨慎使用。
- 默认公网域名性能有限制,仅能支持接口测试使用,请勿用于正式生产环境。小程序后台也无法配置使用默认公网域名。
# 服务端常识
- 设置最小副本为0时,需要注意半小时无请求服务将缩容到0,再次请求时将重启服务,扩容新的实例。
- 服务从0扩容到1(冷启动)耗时由服务启动速度决定,请尽可能优化服务启动性能。
- 如果你想彻底避免服务冷启动影响,请到「服务设置」中将「实例副本数」最小值设为1,但会持续产生资源消耗及费用,请结合业务自行权衡。
- 服务运行正常但偶现500报错,可能是容器规格设置过小(因业务逻辑较重连一个请求都无法稳定支撑),观察CPU和内存使用率是否过高进行判断。可尝试在「服务设置」中增大容器规格。
- 服务请求太慢时,适当增加容器规格有助于提升性能。
- 容器不支持持久化存储,请勿将图片、视频等文件直接存储在容器中,容器扩缩容/重启自愈时,这些写入的文件会被还原。请使用「对象存储」管理文件。
- 一个服务只能开启一个端口,多端口架构请拆分为多个服务。
- 微信云托管自带流量管理能力,无需额外配置负载均衡产品和组件。
- webshell仅用于查询信息和排查问题,通过webshell对容器的修改无法保留。
- 对代码的任何修改,都需要重新构建部署并发布,无法直接在已有版本上修改。
- 代码中请不要在请求处理程序范围之外启动后台线程或例程,并确保在传送响应之前完成所有异步操作。详情
- 请求小程序/公众号接口通过「云调用」能力,无需配置ip白名单。
- 因项目迁移无暇改造为云调用方式,请关闭“开放接口服务”开关,否则可能引发超时报错,因为“开放接口服务”开关开启时,默认将使用云调用方式。
- 云托管服务本身不具有固定的公网出口ip,而是动态变化的。
- 如果需要调用非小程序/公众号之外的其他平台方接口时,因其他平台方要求配置接口白名单需要固定ip的场景,后续我们将推出固定ip的增值付费服务,可单独购买。目前企业用户可在用户群联系我们,开通白名单体验。
# 三、扩缩容常识
- 扩缩容是自动根据流量改变实例的个数,而非改变实例的规格,每一个实例副都遵循「服务设置」中的实例规格。
- 自动扩缩容只根据HTTP请求流量判断,如果服务不接受外部请求,只是在自行跑定时任务,会被「误判」为没有使用,触发缩容。此种场景,请手动设定实例副本数最小值为1,保持常驻。
# 四、反馈技巧
保持良好的反馈习惯,有助于官方团队能快速定位并帮助你解决问题。
服务部署出现问题,请先自己查看日志,看里面的报错所在位置是构建阶段还是部署阶段。
如果是构建阶段,那大概率是你提供的代码包以及dockerfile描述有问题,请先自己在本地构建一下看是否可行,这一阶段的原因基本都是你自己代码造成的,不属于云托管的问题,请先自行排查解决,如果解决不了再进行反馈。
如果是部署阶段,并有相关建议的失败问题,请先参照失败建议进行排查;这一阶段一般是你的服务没有成功启动,直接挂掉了,一般是端口问题,如果连接数据库,检查一下是否是数据库联通问题导致启动失败。
如果上述无法解决你的问题,请通过控制台右上角「帮助」-「新建工单」,并直接复制部署页面的关键信息给我们。
有关于微信生态的各种接口报错,在反馈前请先阅读此文档,一般大部分的问题都有指导。