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

Azure App Service中PHP 7.2+CodeIgniter 3连接MySQL性能缓慢原因咨询

问题分析与解决方案建议

首先,结合你描述的场景,咱们拆解下核心问题和对应的结论:

一、性能瓶颈的核心原因

从你的测试结果(非Azure环境秒开、Azure App Service和MySQL的CPU使用率均远低于阈值)来看,数据库连接管理的低效才是罪魁祸首,和资源规格、区域网络本身关系不大。

你提到网站内容多来自数据库,而CodeIgniter 3默认的数据库连接模式是「每次请求结束就关闭连接」——这种短连接模式在Azure的多租户环境下,会把「建立连接→权限验证→执行查询→关闭连接」的重复开销放大。测试环境要么用了本地数据库(连接开销可忽略),要么配置了连接池优化,所以没有这个问题。

二、Azure Advisor的两项建议是不是问题根源?

完全是!这两个建议精准命中了你的痛点:

  1. 启用PHP驱动的连接重定向:Azure Database for MySQL默认通过网关中转连接,启用重定向后,你的App Service可以直接连接到MySQL节点,跳过网关中转,能大幅降低连接建立的延迟,尤其对短连接场景提升明显。这个需要在CodeIgniter的数据库配置里调整PHP驱动参数(比如mysqlnd的重定向开关),等开发团队处理是合理的选择。
  2. 优化连接管理(减少短连接、用连接池):短连接的频繁创建/销毁是最大的耗时来源。用ProxySQL这类连接池工具,或者直接在CodeIgniter里开启持久连接(把数据库配置里的pconnect设为TRUE),就能复用已有连接,避免重复建立连接的额外开销。

三、同区域App Service和MySQL的通信方式

放心,同区域的Azure App Service和Azure Database for MySQL是通过Azure内部专用高速网络通信的,属于类LAN的本地通信,不会走公网。所以网络延迟本身不是问题,问题出在连接的「频次」和「路径」上。

额外的快速排查建议

  • 先试试在CodeIgniter的数据库配置里开启持久连接($db['default']['pconnect'] = TRUE;),这是框架原生支持的配置,不需要改代码,能快速验证是否是短连接导致的问题。
  • 开启MySQL的慢查询日志,确认有没有慢SQL(不过测试环境快的话,这个概率很低,但可以彻底排除)。
  • 检查浏览器的网络请求,看是不是所有内容都在最后一次性加载——如果是,可能是框架在执行所有数据库查询后才输出内容,但结合测试环境的表现,还是连接问题的可能性更大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:02:53