Todos os produtos
Search
Central de documentação

Alibaba Cloud DNS:Como mitigar a limitação de taxa de solicitações de consulta DNS no ECS?

Última atualização: Aug 03, 2026

Cada instância ECS em uma VPC tem limite de 5.000 consultas DNS por segundo. Para mitigar a limitação de taxa, escale horizontalmente as instâncias ECS ou ative o service de cache nscd.

Cada instância Elastic Compute Service (ECS) em uma Virtual Private Cloud (VPC) tem limite de 5.000 consultas DNS por segundo. Se o volume de consultas DNS de uma única instância ultrapassar esse limiar, ela ficará sujeita à limitação de taxa e o SLA de disponibilidade não poderá ser garantido. Para mitigar esse problema, considere as seguintes abordagens:

  • Escale horizontalmente as instâncias ECS para distribuir as solicitações de consulta DNS entre mais instâncias e reduzir o volume de consultas por instância.

  • Ative o service nscd (Name Service Cache Daemon) no host ECS para acelerar respostas via cache.

    Nota

    Com o service nscd ativado, as alterações nos registros DNS demoram mais para entrar em vigor.

O que é o nscd?

O nscd é um service de cache do sistema que armazena informações de service de nomes, como passwd, group, hosts, services e netgroup. Ele reduz o número de consultas ao service de nomes e o tráfego de rede, resultando em respostas mais rápidas. Este guia foca na configuração de hosts para reduzir as consultas DNS das instâncias ECS.

Comandos comuns do Linux para nscd

Comando

Descrição

yum install -y nscd

Instale o nscd.

systemctl start nscd

Inicia o nscd.

systemctl stop nscd

Interrompe o nscd.

systemctl restart nscd

Reinicia o nscd.

systemctl status nscd

Consulta o status operacional do nscd.

nscd -g

Exibe a configuração efetiva de todos os parâmetros e estatísticas de taxa de acerto do cache.

nscd -i

Invalida o cache especificado. É possível especificar passwd, group, hosts, services, netgroup, etc. Por exemplo: nscd -i hosts.

cat /etc/nscd.conf

Consulta os detalhes da configuração atual do nscd.

vi /etc/nscd.conf

Modifique os parâmetros de configuração do nscd.

Instalação do nscd

Geralmente, o nscd vem instalado por padrão no Linux. Para verificar se o nscd está instalado na sua instância ECS, execute o seguinte comando:

systemctl status nscd # Check the running status of nscd.

Se a saída for conforme abaixo, o nscd não está instalado.

[root@iZbp1fd580caxxxxxxxxxxxxtZ ~]# systemctl status nscd
Unit nscd.service could not be found.

Execute o comando a seguir para instalar o nscd:

yum install -y nscd
[root@izbp1fd580ca5xxx ~]# yum install -y nscd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package nscd.x86_64 0:2.17-326.el7_9 will be installed
--> Processing Dependency: glibc = 2.17-326.el7_9 for package: nscd-2.17-326.el7_9.x86_64
--> Running transaction check
---> Package glibc.x86_64 0:2.17-307.el7.1 will be updated
--> Processing Dependency: glibc = 2.17-307.el7.1 for package: glibc-common-2.17-307.el7.1.x86_64
---> Package glibc.x86_64 0:2.17-326.el7_9 will be an update
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-307.el7.1 will be updated
---> Package glibc-common.x86_64 0:2.17-326.el7_9 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch        Version              Repository              Size
================================================================================
Installing:
 nscd             x86_64      2.17-326.el7_9       updates                289 k
Updating for dependencies:
 glibc            x86_64      2.17-326.el7_9       updates                3.6 M
 glibc-common     x86_64      2.17-326.el7_9       updates                 12 M

Transaction Summary
================================================================================
Install  1 Package
Upgrade             ( 2 Dependent packages)

Total download size: 15 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/3): glibc-2.17-326.el7_9.x86_64.rpm                    | 3.6 MB  00:00:00
(2/3): nscd-2.17-326.el7_9.x86_64.rpm                     | 289 kB  00:00:00
(3/3): glibc-common-2.17-326.el7_9.x86_64.rpm             |  12 MB  00:00:00
--------------------------------------------------------------------------------
Total                                           43 MB/s |  15 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : glibc-common-2.17-326.el7_9.x86_64                         1/5
  Updating   : glibc-2.17-326.el7_9.x86_64                                2/5
  Installing : nscd-2.17-326.el7_9.x86_64                                  3/5
  Cleanup    : glibc-common-2.17-307.el7.1.x86_64                          4/5
  Cleanup    : glibc-2.17-307.el7.1.x86_64                                 5/5
  Verifying  : glibc-2.17-326.el7_9.x86_64                                1/5
  Verifying  : glibc-common-2.17-326.el7_9.x86_64                         2/5
  Verifying  : nscd-2.17-326.el7_9.x86_64                                  3/5
  Verifying  : glibc-common-2.17-307.el7.1.x86_64                          4/5
  Verifying  : glibc-2.17-307.el7.1.x86_64                                 5/5

Installed:
  nscd.x86_64 0:2.17-326.el7_9

Dependency Updated:
  glibc.x86_64 0:2.17-326.el7_9          glibc-common.x86_64 0:2.17-326.el7_9

Complete!

Execute novamente o comando de status. O nscd está instalado, mas não em execução.

[root@izbp1fxxx ~]# systemctl status nscd
● nscd.service - Name Service Cache Daemon
   Loaded: loaded (/usr/lib/systemd/system/nscd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Ativação do service nscd

Execute o comando a seguir para iniciar o nscd:

systemctl start nscd

Execute novamente o comando de status para verificar se o nscd está em execução.

[root@izbp1fd58cxxx ~]# systemctl status nscd
● nscd.service - Name Service Cache Daemon
   Loaded: loaded (/usr/lib/systemd/system/nscd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-08-11 15:00:19 CST; 19s ago
  Process: 12520 ExecStart=/usr/sbin/nscd $NSCD_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 12521 (nscd)
   CGroup: /system.slice/nscd.service
           └─12521 /usr/sbin/nscd
Nota

Para instalar o nscd em um sistema operacional CentOS ou Red Hat, execute o comando: yum install -y nscd.

Para instalar o nscd em um sistema operacional Debian ou Ubuntu, execute o comando: apt-get install -y nscd.

Parâmetros de configuração do nscd

O arquivo de configuração padrão do nscd é /etc/nscd.conf. Execute o comando a seguir para visualizar a configuração:

cat /etc/nscd.conf
[root@iZbp1iy9t5ctdys1... ~]# cat /etc/nscd.conf
#
# /etc/nscd.conf
#
# An example Name Service Cache config file.  This file is needed by nscd.
#
# WARNING: Running nscd with a secondary caching service like sssd may lead to
#          unexpected behaviour, especially with how long entries are cached.
#
# Legal entries are:
#
#       logfile                 <file>
#       debug-level             <level>
#       threads                 <initial #threads to use>
#       max-threads             <maximum #threads to use>
#       server-user             <user to run server as instead of root>
#               server-user is ignored if nscd is started with -S parameters
#       stat-user               <user who is allowed to request statistics>
#       reload-count            unlimited|<number>
#       paranoia                <yes|no>
#       restart-interval        <time in seconds>
#
#       enable-cache            <service> <yes|no>
#       positive-time-to-live   <service> <time in seconds>
#       negative-time-to-live   <service> <time in seconds>
#       suggested-size          <service> <prime number>
#       check-files             <service> <yes|no>
#       persistent              <service> <yes|no>
#
#       shared                  <service> <yes|no>
#       NOTE: Setting 'shared' to a value of 'yes' will accelerate the lookup
#             with the help of the client, but these lookups will not be
#             counted as cache hits i.e. 'nscd -g' may show '0%'.
#
#       max-db-size             <service> <number bytes>
#       auto-propagate          <service> <yes|no>
#
# Currently supported cache names (services): passwd, group, hosts, services
#

        logfile                 /var/log/nscd.log
#       threads                 4
#       max-threads             32
        server-user             nscd
#       stat-user               somebody
        debug-level             1
#       reload-count            5
        paranoia                no
#       restart-interval        3600

        enable-cache            passwd          no
        positive-time-to-live   passwd          600
        negative-time-to-live   passwd          20
        suggested-size          passwd          211
        check-files             passwd          yes
        persistent              passwd          yes
        shared                  passwd          yes
        max-db-size             passwd          33554432
        auto-propagate          passwd          yes

Descrição dos principais parâmetros de configuração

Parâmetro de configuração

Descrição

debug-level

Defina o nível de detalhamento dos logs de depuração.

reload-count

Determina quantas vezes uma entrada armazenada em cache com sucesso é atualizada ativamente antes de expirar.

paranoia

Modo paranoia. Se ativado, o nscd será reiniciado periodicamente.

restart-interval

Intervalo entre reinícios automáticos quando o modo paranoia está ativado.

enable-cache

Ative o service de cache.

positive-time-to-live

TTL para caches de respostas bem-sucedidas.

negative-time-to-live

TTL para caches de respostas com falha. Defina como 0 para evitar que pesquisas com falha afetem solicitações subsequentes.

check-files

Verifique periodicamente se os arquivos relacionados ao cache (/etc/passwd, /etc/group, /etc/hosts) foram modificados. Caso detecte alterações, invalida o cache correspondente.

persistent

Mantém o conteúdo do cache durante reinícios do nscd. Recomendado quando o modo paranoia está ativado.

shared

Compartilha o mapeamento de memória do banco de dados do nscd com os clientes. O padrão é yes. Para consultar a taxa de acerto do cache com nscd -g, defina como no.

max-db-size

Tamanho máximo do banco de dados de cache do nscd, em bytes.

Importante
  • A configuração positive-time-to-live não tem efeito prático no cache DNS. O TTL real é determinado pelo valor retornado na resposta DNS.

Teste da eficácia do cache nscd

Teste com o nscd desativado

  1. Execute o seguinte comando na instância ECS para capturar pacotes UDP na porta 53:

    tcpdump -i any udp and port 53
  2. Em seguida, com o nscd desativado, execute o comando a seguir na instância ECS três vezes consecutivas.

    ping -c 1 -n www.taobao.com # Send one ping command to the domain name www.taobao.com.
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.22 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.225/5.225/5.225/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.210) 56(84) bytes of data.
    64 bytes from 61.174.43.210: icmp_seq=1 ttl=53 time=10.5 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 10.534/10.534/10.534/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.20 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.205/5.205/5.205/0.000 ms
  3. Verifique os resultados da captura de pacotes. Três solicitações de consulta DNS aparecem na porta 53, cada uma retornando um registro de resolução. Isso confirma que as respostas DNS não estão em cache e que a instância ECS envia uma nova consulta pela porta 53 a cada vez.

    10:02:26.112177 IP 10.81.84.51.47500 > 10.143.22.116.domain: 18558+ A? www.taobao.com. (32)
    10:02:26.112280 IP 10.143.22.116.domain > 10.81.84.51.47500: 18558 3/0/0 CNAME www.taobao.com.danuoyi.tbcache.com., A 61.174.43.211, A 61.174.43.210 (112)
    
    10:02:35.447683 IP 10.81.84.51.60549 > 10.143.22.116.domain: 43179+ A? www.taobao.com. (32)
    10:02:35.447784 IP 10.143.22.116.domain > 10.81.84.51.60549: 43179 3/0/0 CNAME www.taobao.com.danuoyi.tbcache.com., A 61.174.43.210, A 61.174.43.211 (112)
    
    10:02:41.356464 IP 10.81.84.51.37941 > 10.143.22.116.domain: 33455+ A? www.taobao.com. (32)
    10:02:41.356627 IP 10.143.22.116.domain > 10.81.84.51.37941: 33455 3/0/0 CNAME www.taobao.com.danuoyi.tbcache.com., A 61.174.43.211, A 61.174.43.210 (112)

Teste com o nscd ativado

  1. Execute o comando start para ativar o service nscd e confirme a ativação usando o comando de consulta de status.

  2. Com o nscd ativado, execute o comando a seguir na instância ECS seis vezes consecutivas. Simultaneamente, capture pacotes na porta 53 da instância ECS.

    ping -c 1 -n www.taobao.com
    [root@iZbp1iy9t5ctxxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.21 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.213/5.213/5.213/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.25 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.254/5.254/5.254/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.21 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.212/5.212/5.212/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.25 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.253/5.253/5.253/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.20 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.206/5.206/5.206/0.000 ms
    [root@iZbp1iy9t5ctdysl6xxx ~]# ping -c 1 -n www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (61.174.43.211) 56(84) bytes of data.
    64 bytes from 61.174.43.211: icmp_seq=1 ttl=53 time=5.24 ms
    
    --- www.taobao.com.danuoyi.tbcache.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.247/5.247/5.247/0.000 ms
  3. Analise os resultados da captura de pacotes. Apenas uma solicitação de consulta DNS aparece na porta 53, confirmando que as consultas subsequentes atingiram o cache do nscd em vez de passar pela porta 53.

    Nos resultados da captura de pacotes, o domínio alvo para consultas de registro DNS A é www.taobao.com. A saída é a seguinte.

    10:20:46.011924 IP 10.81.84.51.52131 > 10.143.22.118.domain: 12973+ A? www.taobao.com. (32)
    10:20:46.012115 IP 10.143.22.118.domain > 10.81.84.51.52131: 12973 3/0/0 CNAME www.taobao.com.danuoyi.tbcache.com., A 61.174.43.211, A 61.174.43.210 (112)
    10:20:46.012221 IP 10.81.84.51.56349 > 10.143.22.118.domain: 1209+ AAAA? www.taobao.com. (32)
    10:20:46.013867 IP 10.143.22.118.domain > 10.81.84.51.56349: 1209 3/0/0 CNAME www.taobao.com.danuoyi.tbcache.com., AAAA 240e:f7:a093:101:3::3e8, AAAA 240e:f7:a093:101:3::3e7 (136)
    Importante

    Durante a captura de pacotes, você pode notar que o tcpdump ainda captura pacotes de consulta DNS após a conclusão do comando ping. Isso ocorre devido ao mecanismo de atualização ativa do nscd e é esperado. Para desativar a atualização ativa, defina o parâmetro reload-count como 0.

  4. Também é possível verificar as estatísticas de acerto do cache. Execute o comando ping várias vezes e, em seguida, execute o comando a seguir para visualizar as estatísticas:

    nscd -g # Output the configuration of all active parameters and cache hit ratio statistics.

    Na seção hosts cache da saída, o valor de cache hits on positive entries é 64, com uma taxa de acerto de cache de 52%.

    group cache:
    
                no  cache is enabled
               yes  cache is persistent
               yes  cache is shared
                 0  suggested size
                 0  total data pool size
                 0  used data pool size
              3600  seconds time to live for positive entries
                60  seconds time to live for negative entries
                 0  cache hits on positive entries
                 0  cache hits on negative entries
                 0  cache misses on positive entries
                 0  cache misses on negative entries
                0%  cache hit rate
                 0  current number of cached values
                 0  maximum number of cached values
                 0  maximum chain length searched
                 0  number of delays on rdlock
                 0  number of delays on wrlock
                 0  memory allocations failed
               yes  check /etc/group for changes
    
    hosts cache:
    
               yes  cache is enabled
               yes  cache is persistent
                no  cache is shared
               211  suggested size
            216064  total data pool size
               176  used data pool size
              3600  seconds time to live for positive entries
                20  seconds time to live for negative entries
                64  cache hits on positive entries
                 0  cache hits on negative entries
                50  cache misses on positive entries
                 7  cache misses on negative entries
               52%  cache hit rate
                 1  current number of cached values
                 6  maximum number of cached values
                 1  maximum chain length searched
                 0  number of delays on rdlock
                 0  number of delays on wrlock
                 0  memory allocations failed
               yes  check /etc/hosts for changes