You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Web App连接Azure MySQL专用连接仅1个可用问题排查

问题诊断与解决思路

核心原因推测

你遇到的「单连接限制」问题,大概率和以下几个配置细节有关:

1. PHP未启用持久化连接或连接池

如果你的PHP代码是每次请求都创建全新的数据库连接,切换到专用端点(单IP)后,Web App的TCP连接复用机制可能失效,导致所有请求的DB连接请求被串行处理,表现为同一时间只能有一个连接可用。

解决方法:

  • 改用PDO持久化连接:在DSN中添加persistent=1参数,修改后的连接URL为:
    mysql://user:password@10.1.1.4:3306/mydatabase?serverVersion=8.0.31&persistent=1
    
  • 调整PHP配置:确保pdo_mysql.max_persistent、pdo_mysql.max_links等参数设置合理(单实例可设为100左右,根据实例规格和预期并发量调整)。

2. 直接使用专用端点IP绕过负载均衡逻辑

专用端点本质是Azure托管的负载均衡器,默认通过DNS轮询分配后端连接。你直接指定静态IP(10.1.1.4)跳过DNS解析,会导致所有连接集中到单个后端节点,触发LB的单IP连接限制。

解决方法:

  • 配置专用DNS区域:为Azure MySQL创建privatelink.mysql.database.azure.com专用DNS区域,关联到Web App所在的VNet,让Web App通过数据库原始域名解析到专用端点IP。
  • 恢复使用数据库域名连接:修改连接URL为原始域名,确保流量通过负载均衡分发:
    mysql://user:password@your-db-name.mysql.database.azure.com:3306/mydatabase?serverVersion=8.0.31
    

3. VNet集成的子网或NSG配置异常

检查Web App集成的VNet子网与MySQL专用端点子网的网络规则:

  • 确认NSG规则允许双向TCP 3306端口流量,且未手动设置并发连接数限制(NSG默认不限制并发)。
  • 检查子网路由表:确保没有路由规则导致DB连接流量被节流或串行转发。

4. Azure MySQL服务器参数限制

虽然公网连接时正常,但切换专用端点后可能触发MySQL连接数限制:

  • 登录Azure门户,进入MySQL服务器的「服务器参数」页面,检查max_connections值是否匹配并发需求(General Purpose实例可设为1000以上)。
  • 同步检查wait_timeout和interactive_timeout参数,避免连接被过早回收。

验证步骤

  1. 先测试启用PDO持久化连接,观察并发查询是否恢复正常。
  2. 若问题依旧,配置专用DNS区域并改用域名连接。
  3. 最后排查VNet/NSG规则和MySQL服务器参数。

内容的提问来源于stack exchange,提问作者AQuirky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:20:14