两个Azure web apps邮件发送速度差异显著的排查咨询
Azure 同区域同代码Web Job邮件发送耗时差异排查方向
已知两台Web App部署在南非北部区域、代码完全一致、共用同个Office365 SMTP通道、排除DB侧影响,高规格实例A单封邮件发送耗时稳定6秒,低规格实例B耗时不足1秒,可按以下优先级排查:
1. 配置差异核对(优先排查,因为两台仅web.config存在差异)
- 逐行对比web.config中SMTP相关配置:重点检查
SmtpClient的TLS版本配置,若A强制使用TLS 1.0/1.1低版本协议,Office365 SMTP的握手协商会产生5秒左右的额外延迟;确认EnableSsl开关配置一致。 - 检查代理配置项:确认A的web.config或系统级配置中是否误配置了无效代理地址,导致发信前先尝试连接代理超时后才直连SMTP服务器,产生固定延迟。
- 检查证书校验相关配置:若A开启了强制校验证书吊销列表(CRL),且实例到CRL服务器的网络不通,会在SSL握手阶段等待CRL查询超时,对应5-6秒的典型延迟特征。
- 检查日志与诊断配置:确认A是否开启了冗余的SMTP全链路调试日志、逐操作磁盘写入逻辑,额外IO拖慢发信流程。
2. 网络链路排查
- 登录两台Web App的Kudu控制台,分别执行
tcping smtp.office365.com 587、tcptraceroute smtp.office365.com 587,对比TCP建连耗时、路由跳数,确认A是否存在路由绕路、到SMTP端点基础网络延迟过高的问题。 - 检查VNet与出站网络配置:确认A是否配置了VNet集成、自定义NAT网关或出站防火墙,B为默认公网出站,额外的网络跳转、防火墙流量深度检测会增加发信延迟;同时核对NSG规则是否对587端口流量做了额外拦截校验。
- 核对两台实例的出站公网IP,确认A的出站IP是否被Office365侧做了连接限流、低优先级调度。
- 检查IP协议栈优先级:若A默认优先使用IPv6连接SMTP服务器,但Azure到Office365的IPv6链路不通,会等待IPv6连接超时后回退到IPv4,产生固定的5-6秒延迟。
3. 运行时与客户端行为排查
- 核对两台Web Job的运行时版本:确认.NET/.NET Framework版本、
SmtpClient及相关依赖库版本完全一致,旧版本库存在连接复用逻辑bug,会导致每次发信都重新走完TCP建连、SSL握手、账号认证全流程,无法复用长连接。 - 检查Web Job运行配置:确认A的Web Job是否运行在受限沙箱模式、存在单线程阻塞问题,或触发了不必要的冷启动初始化逻辑。
- 做端口流量抓包定位:在两台实例上对587端口做流量抓包,逐段统计TCP建连、SSL握手、SMTP认证、邮件内容传输、连接断开各环节的耗时,直接定位延迟产生的具体阶段。
- 验证SMTP连接复用逻辑:确认A环境的配置是否导致SMTP客户端实例无法正常复用,每封邮件都新建连接产生额外开销,而B正常复用已建立的SMTP长连接。
内容的提问来源于stack exchange,提问作者Savage
相关产品推荐
相关产品推荐

