日常梳理-DNS缓存

文章目录

  • 请求路径:
  • [一、查看JVM DNS 缓存](#一、查看JVM DNS 缓存)
  • 二、查看操作系统DNS缓存
    • [1. systemd-resolved(主流默认)](#1. systemd-resolved(主流默认))
    • [2. nscd(传统服务)](#2. nscd(传统服务))
    • [3. dnsmasq 缓存的是权威 DNS 返回的原始 TTL(需通过日志查看)](#3. dnsmasq 缓存的是权威 DNS 返回的原始 TTL(需通过日志查看))
    • [4. 无独立缓存服务(仅 glibc 解析器)](#4. 无独立缓存服务(仅 glibc 解析器))
  • [三、查看本地DNS服务器的TTL(由权威 DNS 服务器决定)](#三、查看本地DNS服务器的TTL(由权威 DNS 服务器决定))

请求路径:

JVM DNS缓存->操作系统DNS缓存->本地DNS服务器(默认60s)->权威 DNS 服务器

一、查看JVM DNS 缓存

  1. 查看JVM 启动参数,是否有-Dnetworkaddress.cache.ttl=60

  2. 查看java.security文件,是否设置参数networkaddress.cache.ttl。JDK 1.8 在没有配置 Security Manager 时,networkaddress.cache.ttl 默认为 30 秒,而不是永久有效。

  3. java.security 文件路径:

sh 复制代码
JDK8:$JAVA_HOME/jre/lib/security/java.security
JDK11+:$JAVA_HOME/conf/security/java.security(JRE 已合并到 JDK)。
  1. 查看security manager:
    启用方式:启动 JVM 时添加参数 -Djava.security.manager;
    禁用状态:默认无此参数,Security Manager 不生效;

二、查看操作系统DNS缓存

1. systemd-resolved(主流默认)

systemd-resolved 会缓存 DNS 解析结果,并保留原始的 TTL 值(从权威 DNS 服务器获取)。resolvectl query 命令,直接输出缓存的剩余 TTL 和原始 TTL(从权威 DNS 服务器获取)。

sh 复制代码
#查看单个域名的缓存TTL(推荐)
resolvectl query 你的下游域名

你的下游域名: 192.168.1.100 -- link: eth0
              192.168.1.101
              192.168.1.102

-- Information acquired via protocol DNS in 20ms.
-- Data is authenticated: no
-- TTL左:剩余TTL时间 | TTL右:原始TTL时间
-- 缓存状态:cache(来自缓存)/ network(来自网络查询)
   RR type: A
   TTL: 35s (valid for 60s) # 剩余35秒,原始TTL为60秒

2. nscd(传统服务)

nscd 的缓存 TTL 是配置固定值(不是动态的),查看配置文件即可:

sh 复制代码
# 查看 nscd 配置的缓存TTL(正向缓存)
grep "positive-time-to-live" /etc/nscd.conf

# 示例输出
positive-time-to-live   hosts            3600  # 缓存3600秒(1小时)

3. dnsmasq 缓存的是权威 DNS 返回的原始 TTL(需通过日志查看)

sh 复制代码
# 查看 dnsmasq 日志中的缓存TTL
journalctl -u dnsmasq | grep -E "你的域名|TTL" | tail -5

# 示例输出
dnsmasq[1234]: cached 你的域名 is 192.168.1.100 TTL 60  # 缓存60秒

4. 无独立缓存服务(仅 glibc 解析器)

若系统未运行任何 DNS 缓存服务,无持久化 DNS 缓存,仅单次查询临时缓存,无法查看 TTL。可直接查询权威 DNS 的原始 TTL:

sh 复制代码
#查看权威DNS返回的原始TTL
dig +ttlid 你的域名

三、查看本地DNS服务器的TTL(由权威 DNS 服务器决定)

本地 DNS 服务器(如运营商 DNS、路由器 DNS)本身不主动配置 TTL,而是在向权威 DNS 查询时,接收权威 DNS 返回的 "原始 TTL",并以此作为缓存时长。

相关推荐
一枕槐安48712 小时前
RAG 服务扛住高并发:缓存、队列、限流三件套
java·spring·缓存·异步任务·rag·断路器
与数据交流的路上20 小时前
一次 redis 幽灵内存的分析
数据库·redis·缓存
Geek-Chow21 小时前
06 · DeepSeek V4.1 Flash 推理端到端走查:一个 Agent 请求穿过 recipe、KV 缓存、Prefill 与 Decode
缓存
前进的李工21 小时前
Agent 学习笔记 04:KV Cache 与上下文缓存
笔记·学习·缓存·agent·注意力机制·kv cache·prompt cache
John_Hui2 天前
第 5 篇:Ubuntu 安装 Redis
数据库·redis·缓存
l1t2 天前
DeepSeek总结的ALTER FUNCTION SET work_mem:无需全局更改即可修复 PostgreSQL 磁盘溢出
sql·缓存·postgresql
咖啡八杯2 天前
Redis 工具封装:RedisCache 对 Operations 体系的二次封装
java·数据库·redis·缓存·框架·springboot·若依
l1t2 天前
DeepSeek总结的PostgreSQL 中的 SQL 与 PL/pgSQL:计划缓存
sql·缓存·postgresql
hongyangcao2 天前
Cloudflare GLM-5.3 串号事故复盘:KV 缓存页记账错了一个字段,155 条回复答进了别人的会话
人工智能·缓存·ai