96SEO 2026-02-19 22:52 8
远端的业务集群基于HTTP/HTTPS协议#xff0c;提供业务服务#xff0c;集群中包含了多个业务节点#xff0c;当前方案中在DNS服务器上配置域名#xff0c;指向业务集群中的…近期参与的项目中依赖DNS服务器来解析外部的业务集群遇到了一连串的问题。

远端的业务集群基于HTTP/HTTPS协议提供业务服务集群中包含了多个业务节点当前方案中在DNS服务器上配置域名指向业务集群中的多个业务节点。
产品的特性代码中使用libcurl来访问业务集群提供的HTTP/HTTPS的服务。
结果进入大规模测试阶段时暴露了一个严重的问题由于产品的并发度比较高特性开启后在短时间内会触发大量的业务请求。
这导致如下后果
libcurl代码发起了大量的域名解析请求DNS服务器的并发能力不足只能选择性回复部分报文。
大量请求由于建立链接时因域名解析失败而失败。
由于产品内建了重试逻辑于是引发了更多的请求。
于是DNS不堪重负拒绝了更多的域名解析请求。
结果其它依赖DNS解析域名的业务同样受到了波及。
在现有的重试逻辑中增加了休眠时间使用指数退减的方式逐次增加重试之间的间隔时间避免大量请求扎堆。
经过实测本策略缓解了问题但并没有解决问题。
修改libcurl的使用方法启用了DNS缓存特性并增大了缓存的失效时间。
经过实测本策略的效果不明确。
修改产品的业务代码降低并发度。
本策略实施后有明显的效果失败的请求次数明显下降考虑到产品的代码中存在多个特性使用libcurl访问远端集群的服务本问题依然存在。
一方面可能导致当前特性的性能规格不达标。
另外前期多个特性均在使用libcurl各个业务都按照相同的策略去降低并发度修改、验证的工作量巨大管理团队无法接受开发、测试团队同样觉得疲惫难以为继。
DNS服务器的并发能力不可预期。
交付场景下DNS服务器由客户提供其并发能力不可预期短时间内也不可能提升性能假如由于本产品的原因占满了客户DNS服务器的处理能力可能会阻塞客户的其它业务因此仍然需要直面问题。
收编现有业务代码中libcurl的使用对各特性提供统一的HTTP协议客户端。
在上述客户端的代码中增加域名解析结果的缓存。
这个方案工作量不大很快通过了测试团队组织的功能验证、性能验证。
本来觉得未来一片光明但测试团队在执行故障注入的用例时发现了新的问题域名解析操作执行时间过久单次调用居然要20秒才能返回。
这个新问题和前述方案中域名解析的实现相关换句话说这是域名解析的C函数的坑。
gethostbyname线程不安全排除。
gethostbyname_r是gethostbyname的线程安全版本当前在用。
从实际测试的结果来看发现gethostbyname_r存在一个严重的问题函数的参数中不能指定超时值导致耗时不可控。
查阅了大量资料之后发现耗时的问题其实和DNS域名解析的过程相关不能怪设计API的前辈不用心。
虽然不能在调用gethostbyname_r时传入超时值但无意中发现了/etc/resolv.conf。
通过修改options
timeout:6中的attempts和timeout发现在一定程度上可以缓解在DNS故障场景下调用gethostbyname_r函数耗时过长的现象。
经过一系列折腾目前的解决方案虽不完美但至少获得了产品团队的认可因此优化工作暂告一段落。
E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF
rTOgKkj9DMvMzykrKDz7dsie4Xx1jwuBlZdH9ntLEikavNoZMRN7SxE
iweiVanZo1q9hhrSxAn8O1ScKkRwwHTSCiSvQnZ8bzy4ToM3I832VIiR
OirCK7GtufMaxNCOmD14s7Zg24qLf9CmQTid3eIBMP4Sjuq4MSIsu
tgSXJS6EI1OumSojANeO9mq1khc5cxLaeOqJfRb10Vvujl73jZpaXxE9
J4/GehjpG6YR04/37geOwOSaVwx6c3PndgT0L33O/maN/Tjng2UUhHtW
lOh8gIVxFYRipqdDZ1XJQKx5o4o8Oh3YN3Vd1I5rrKJhEfwecej7nyI
199.7.83.42#53(l.root-servers.net)
CK0POJMG874LJREF7EFN8430QVIT8BSM.com.
CK0Q2D6NI4I7EQH8NA30NS61O48UL8G5
CK0POJMG874LJREF7EFN8430QVIT8BSM.com.
HHilTlIgM2bBSkNCrfIYydeweb7FpcSd/HCPjoMq9cDoI45LnU1trxYf
GtncYfSgPxd01lt7BuBdTBRjFX2kHEWQNAjqKRwj9ohk9mqvk3naenD
eWVPwSEZjYdVLPjL7rXvMWq6GRZXFG2OC0oR37mS4PCPT/pWYTARo7m
66PiR/ixIP8UPkUbxjZTHFuDsRlywg8Od0OsTopTj5rw
HPVV1UNKTCF9TD77I2AUR73709T975GH.com.
HPVVAN8CFKHHHMEIDVJHFNQEOI5G6C89
HPVV1UNKTCF9TD77I2AUR73709T975GH.com.
jtcfLKFI33jWFyVS/iT/x73jJM7gultJQD6xHY0yl4ZWp2ktqwCrA
wk8ybADERvnpDU/u9LKgBVGkT7rIDnheKGcXzKe5Lgjilu9aHWjIiyny
J/kwYkBeXCqXofFrkq5QS/El4Esu4Hp7FCUAm5lRMNlGL8H9QrdqESl
G4NIUZFsyhqj3Ulz0/u1QjPRm13QmKOuUh/DvWhj63Ru5g
192.48.79.30#53(j.gtld-servers.net)
36.155.132.78#53(ns3.baidu.com)
2409:8c20:6:1d55:0:ff:b09c:7d77
2409:8c20:6:1135:0:ff:b027:210c相关资料
/etc/resolv.conf文件的配置浅析resolv.conf常用参数Linux
/etc/resolv.conf文件解析REHL7/CentOS7
详解用resolvconf配置DNS服务器dns配置文件/etc/resolv.conf中search和options
/etc/resolv.conf文件说明域名解析——gethostbyname()函数及socket客户端域名解析gethostbyname()函数详解gethostbyname()、getaddrinfo()函数基本情况关于gethostbyname_r的参数及返回值gethostbyname
gethostbyname_r可重入的得到dns信息【UNP笔记】第十一章
gethostbyname_r函数代码示例如何在linux中使用gethostbyname_rDIG域名解析查询工具掌握
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback