能否在我的函数代码中发起网络连接?
能。用户可使用正常的语言和操作系统功能,如发起 TCP、UDP 的网络连接,能通过使用语言相关的库连接数据库、访问 API 等。
Redis 数据库只有内网,使用 SCF 怎么进行连接?
SCF 部署到 VPC 后,如何配置外网访问?
SCF 访问外网时 IP 是随机的还是固定的?
云函数有网络限制吗?
有。云函数有并发连接数限制和内网带宽限制。
并发连接数限制
当前针对访问目标的同一 ip:port ,并发连接数限制为六万个。由于短连接涉及到中间设备的释放时间,因此在短连接情况下,连接数会进一步下降。如果您有多个函数或同一函数的多个并发访问同一 ip:port ,请注意此处的限制,并可通过以下方案来避免快速耗尽连接数导致代码错误。
尽量使用长连接。在函数初始化阶段完成连接并持续复用连接,来避免实际调用过程中使用短连接带来的频繁连接、释放。该措施可以充分使用连接数,但仍存在连接数上限的限制。
访问目标提供多个 ip:port 对。通过访问目标的多个 ip:port 对,将连接尽量分散到多个连接目标上,可以避免触碰到连接数上限。
内网带宽限制
在配置 VPC 连接内网的情况下,当前针对某一特定 VPC 的连接带宽为 100MB。带宽由配置了相同 VPC 的函数和函数的多个并发实例共享。如需提升内网带宽,请您联系腾讯云技术顾问进行申请。更多详情请参考 网络配置管理。
函数网关是什么,用于解决什么问题?
当函数配置了固定公网 IP 或私有网络时,网关会用于下述操作:
固定公网 IP:云函数申请的 EIP 会挂载在函数网关进行流量转发。
私有网络:如果函数运行中需要访问用户 VPC 下的其他服务(例如 MySQL),则需要进行跨账号网络打通,网关会在用户 VPC 内申请一个 IP 地址,即内网出口 IP,用于转发流量时进行 SNAT,否则不同账号间网络隔离, 无法进行通信。
函数配置了 VPC,如果函数创建了100个实例,会占用 VPC 下100个 IP 地址吗?
不会。
函数实例创建在云函数平台账号的 VPC 下, 不直接占用用户 VPC 下的 IP 地址;这些函数实例会通过函数网关访问 VPC 资源,每个网关默认占用用户 VPC 内1个 IP。
函数网关在同主账号同地域下,会按照以下逻辑复用:
所有勾选了“私有网络”的函数(无论是否有进行其他网络配置)会通过子网粒度复用网关,即同一子网的多个函数共享一个网关实例。
对于仅配置固定公网出口 IP 的函数,会通过账号粒度共享网关,即所有仅勾选固定公网 IP 的函数共用一个 EIP 网关。
需注意,共享同一网关的两个函数,网关带宽也被共享。因此如果某个函数网络流量过大,可能影响其他函数的网络请求。
例如,网关总带宽是1500Mbps,如果A函数占用了1400Mbps带宽,那B函数仅可使用100Mbps带宽。
函数需访问 VPC 内其他服务,存在大量上传下载行为,网关容量是否足够?
函数网关默认带宽是1.5Gbps(出+入共享)。
注意:
扩容升配的操作不适用于勾选了固定内网出口 IP 或固定公网出口 IP 特性的函数。具体解释请查看问题4、问题5。
函数勾选“固定公网出口 IP”,带宽只有100Mbps,可以提升吗?
不能提升。
EIP 适用于某些需要进行认证鉴权、检查来源 IP 的场景,不适合大量数据访问。
如有大带宽需求,可参考以下方案:
a. 修改为公网访问模式:如无特殊诉求,可以关闭 EIP 特性,改为公网访问模式,使用 SCF 的公共网关访问公网,可以消除带宽的限制。
b. 修改为私有网络模式:使用客户 VPC 绑定的 NAT 网关访问公网, 在 NAT 网关上用户可以调整公网带宽的大小。
固定内网出口 IP/固定公网出口 IP 模式下网络容量的特别说明
在网络模式示意图中可以看到,配置 VPC 的场景下,函数网关需要在用户 VPC 下申请1个 IP 地址,作为内网出口 IP;
开启固定内网 IP 之后,函数所有访问 VPC 的流量都会经过唯一一个内网出口 IP 进行转发;由于一个 IP 只能绑定在一台网关节点上,导致此网关无法横向扩展。
因此,如函数开启了固定内网出口 IP 特性,遇到网络瓶颈(如带宽打满、pps 打满、连接数打满)时,平台侧无法进行升配扩容。
同理,勾选了固定公网 IP后,也会存在类似问题,遇到网络瓶颈后无法横向扩展。
建议业务在开启固定公网出口 IP 或固定内网出口 IP 特性时,谨慎评估容量风险。