DNS变了,.NET应用程序需要重启吗?

67f2db85b09a6c8ecf7c7b971cce949e.gif

【.NET总结/Edison Zhou

1啥,DNS变了?

相信很多童鞋所在公司在使用内网域名替代服务器IP写在了各种config文件中,比如数据库服务器、Redis服务器等等。

Edison公司所在团队的DB是由DBA统一管理的,由于近一年来DB服务器会经常面临维护、升级、增加等,需要经常修改IP地址。因此,我们统一找运维配置了内网dns,将所有DB的IP地址改为内网域名写在config文件中。

<connectionStrings>
<add name="conn" connectionString="server=mssql-testdb.ent.cn;database=数据库名;uid=用户名;password=密码" providerName="System.Data.SqlClient" />
</connectionStrings>

近期DB团队对MSSQL集群的某一台服务器进行升级维护打补丁,应用端需要将这台读库的连接指向另一台。由于我们使用的是域名,因此只需运维临时切换一下dns即可。

那么,问题来了,切换dns后,.NET应用程序端到底需要重启不?

2.NET端DNS缓存

其实,.NET端是有DNS缓存的,它的控制在这里:

ServicePointManager.DnsRefreshTimeout

默认情况下,它的默认值是120s,即两分钟。换句话说,如果运维改了DNS,应用端需要两分钟后才能连接到解析后的新IP地址。

如果迫不及待,我们可以修改这个值变小一些,比如:30s 又或者 直接设置为 0。

ServicePointManager.DnsRefreshTimeout = 30000; // 单位:毫秒
ServicePointManager.DnsRefreshTimeout = 0; // 单位:毫秒

Edison也通过一个小demo测试了一下,120s 一秒不多一秒不少。对于可以容忍小规模异常的情景,我们的.NET应用程序基本不需要重启,当然也最好在业务低峰期进行dns切换

关于ServicePointManager

ServicePointManager 是一个静态类,用来创建、维护和删除 ServicePoint 类的实例。

命名空间:System.Net
程序集:System.dll

当应用程序通过 ServicePointManager 对象请求与 Internet 资源统一资源标识符(URI)的连接时,ServicePointManager 将返回一个 ServicePoint 对象,其中包含由 URI 标识的主机和方案的连接信息。 如果该主机和方案存在现有 ServicePoint 对象,则 ServicePointManager 对象返回现有 ServicePoint 对象;否则,ServicePointManager 对象会创建一个新的 ServicePoint 对象。

# C# Sample
Uri myUri = new Uri("http://www.contoso.com/");
ServicePoint mySP = ServicePointManager.FindServicePoint(myUri);

更多内容参考:

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.servicepointmanager?redirectedfrom=MSDN&view=netframework-4.5

af1e1436b28a7a94932b1a7d08b1dcbb.gif

年终总结:Edison的2021年终总结

数字化转型:我在传统企业做数字化转型

C#刷题:C#刷剑指Offer算法题系列文章目录

.NET面试:.NET开发面试知识体系

.NET大会:2020年中国.NET开发者大会PDF资料

ae6ec246017868a106158011eea09efe.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值