すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud DNS:ECS の DNS クエリリクエストのレート制限の緩和方法

最終更新日:Aug 04, 2026

Virtual Private Cloud (VPC) 内の各 Elastic Compute Service (ECS) インスタンスには、1 秒あたり 5,000 クエリという DNS クエリ制限があります。ECS インスタンスのスケールアウトや nscd キャッシュサービスの有効化により、レート制限を緩和することができます。

VPC 内の各 ECS インスタンスには、1 秒あたり 5,000 クエリという DNS クエリ制限があります。単一インスタンスからの DNS クエリ数がこのしきい値を超えた場合、そのインスタンスはレート制限の対象となり、可用性 SLA は保証されません。この問題を緩和するには、次の方法を検討してください:

  • ECS インスタンスをスケールアウトし、DNS クエリリクエストをより多くのインスタンスに分散させることで、インスタンスごとのクエリ量を削減します。

  • ECS ホスト上で nscd (Name Service Cache Daemon) サービスを有効にし、キャッシュアクセラレーションを実現します。

    説明

    nscd サービスを有効にすると、DNS レコードの変更が反映されるまでの時間が長くなります。

nscd とは

nscd は、passwd、group、hosts、services、netgroup などのネームサービス情報をキャッシュするシステムキャッシュサービスです。ネームサービスクエリとネットワークトラフィックの数を削減し、サービスの応答速度を向上させます。本ガイドでは、ECS インスタンスからの DNS クエリを削減するための hosts 設定に焦点を当てています。

nscd の一般的な Linux コマンド

コマンド

説明

yum install -y nscd

nscd をインストールします。

systemctl start nscd

nscd を起動します。

systemctl stop nscd

nscd を停止します。

systemctl restart nscd

nscd を再起動します。

systemctl status nscd

nscd の動作状態を確認します。

nscd -g

すべてのパラメーターの有効な設定とキャッシュヒット率の統計を出力します。

nscd -i

指定したキャッシュを無効化します。passwd、group、hosts、services、netgroup などを指定できます。例:nscd -i hosts

cat /etc/nscd.conf

現在の nscd 設定の詳細を確認します。

vi /etc/nscd.conf

nscd 設定パラメーターを変更します。

nscd のインストール

nscd は通常、Linux にデフォルトでインストールされています。ECS インスタンスに nscd がインストールされているかどうかを確認するには、次のコマンドを実行します:

systemctl status nscd # nscd の動作状態を確認

次のような出力が表示された場合、nscd はインストールされていません。

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

次のコマンドを実行して 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!

再度 status コマンドを実行します。nscd はインストールされていますが、実行されていません。

[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)

nscd サービスの有効化

次のコマンドを実行して nscd を起動します:

systemctl start nscd

再度 status コマンドを実行して、nscd が実行されていることを確認します。

[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
説明

CentOS または Red Hat オペレーティングシステムに nscd をインストールするには、次のコマンドを実行します:yum install -y nscd

Debian または Ubuntu オペレーティングシステムに nscd をインストールするには、次のコマンドを実行します:apt-get install -y nscd

nscd 設定パラメーター

nscd のデフォルト設定ファイルは /etc/nscd.conf です。次のコマンドを実行して設定を表示します:

cat /etc/nscd.conf
[root@iZbp1iy9t5ctdys1... ~]# cat /etc/nscd.conf
#
# /etc/nscd.conf
#
# Name Service Cache の設定ファイルの例です。このファイルは nscd に必要です。
#
# 警告:nscd を sssd のようなセカンダリキャッシュサービスと一緒に実行すると、特にエントリーがキャッシュされる期間に関して、予期しない動作を引き起こす可能性があります。
#
# 有効なエントリーは次のとおりです:
#
#       logfile                 
#       debug-level             
#       threads                 <使用する初期スレッド数>
#       max-threads             <使用する最大スレッド数>
#       server-user             
#               nscd が -S パラメーターで起動された場合、server-user は無視されます
#       stat-user               <統計情報のリクエストを許可されたユーザー>
#       reload-count            unlimited|<数値>
#       paranoia                
#       restart-interval        <時間 (秒)>
#
#       enable-cache            <サービス> 
#       positive-time-to-live   <サービス> <時間 (秒)>
#       negative-time-to-live   <サービス> <時間 (秒)>
#       suggested-size          <サービス> <素数>
#       check-files             <サービス> 
#       persistent              <サービス> 
#
#       shared                  <サービス> 
# 注:'shared' を 'yes' に設定すると、クライアントの助けを借りてルックアップが高速化されますが、これらのルックアップはキャッシュヒットとしてカウントされません。つまり、'nscd -g' は '0%' を表示する場合があります。
#
#       max-db-size             <サービス> <バイト数>
#       auto-propagate          <サービス> 
#
# 現在サポートされているキャッシュ名 (サービス):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

主要な設定パラメーターの説明

設定パラメーター

説明

debug-level

reload-count

キャッシュに成功したエントリが期限切れになる前に、アクティブに更新される回数を指定します。

paranoia

パラノイアモード。有効にすると、nscd は定期的に再起動されます。

restart-interval

パラノイアモードが有効な場合の自動再起動間隔。

enable-cache

キャッシュサービスを有効にします。

positive-time-to-live

成功応答キャッシュの TTL。

negative-time-to-live

失敗応答キャッシュの TTL。失敗したルックアップが後続のリクエストに影響しないようにするには、これを 0 に設定します。

check-files

キャッシュ関連ファイル (/etc/passwd、/etc/group、/etc/hosts) が変更されたかどうかを定期的にチェックします。変更が検出された場合、対応するキャッシュが無効化されます。

persistent

nscd の再起動時にキャッシュ内容を保持します。パラノイアモードが有効な場合に推奨します。

shared

nscd データベースのメモリマッピングをクライアントと共有します。デフォルトは yes です。nscd -g でキャッシュヒット率を確認するには、これを no に設定します。

max-db-size

nscd キャッシュデータベースの最大サイズ (バイト単位)。

重要
  • positive-time-to-live 設定は、DNS キャッシュには実質的な効果がありません。実際の TTL は、DNS 応答で返される値によって決定されます。

nscd キャッシュの有効性テスト

nscd 無効時のテスト

  1. ECS インスタンスで次のコマンドを実行し、ポート 53 の UDP パケットをキャプチャします:

    tcpdump -i any udp and port 53
  2. 次に、nscd を無効にした状態で、ECS インスタンスで次のコマンドを 3 回連続で実行します。

    ping -c 1 -n www.taobao.com # ドメイン名 www.taobao.com に ping を 1 回送信
    [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%パケット損失, 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%パケット損失, 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%パケット損失, time 0ms
    rtt min/avg/max/mdev = 5.205/5.205/5.205/0.000 ms
  3. パケットキャプチャの結果を確認します。ポート 53 で 3 つの DNS クエリリクエストが表示され、それぞれが解決レコードを返しています。これにより、DNS 応答がキャッシュされておらず、ECS インスタンスが毎回ポート 53 を介して新しいクエリを送信していることが確認できます。

    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)

nscd 有効時のテスト

  1. start コマンドを実行して nscd サービスを有効にし、status コマンドを使用して nscd が有効になっていることを確認します。

  2. nscd を有効にした状態で、ECS インスタンスで次のコマンドを 6 回連続で実行します。同時に、ECS インスタンスのポート 53 でパケットをキャプチャします。

    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%パケット損失, 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%パケット損失, 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%パケット損失, 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%パケット損失, 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%パケット損失, 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%パケット損失, time 0ms
    rtt min/avg/max/mdev = 5.247/5.247/5.247/0.000 ms
  3. パケットキャプチャの結果を確認します。ポート 53 では DNS クエリリクエストが 1 つだけ表示され、後続のクエリがポート 53 を経由せず、nscd キャッシュにヒットしたことが確認できます。

    パケットキャプチャの結果では、DNS A レコードクエリのターゲットドメインは www.taobao.com です。出力は次のとおりです:

    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)
    重要

    パケットキャプチャ中に、ping コマンド完了後も tcpdump が DNS クエリパケットをキャプチャし続けることがあります。これは nscd のアクティブ更新メカニズムによるもので、想定される動作です。アクティブ更新を無効にするには、reload-count パラメーターを 0 に設定します。

  4. キャッシュヒットの統計も確認できます。ping コマンドを複数回実行した後、次のコマンドを実行して統計を表示します:

    nscd -g # アクティブなパラメーター設定とキャッシュ統計を出力

    出力の hosts cache セクションでは、cache hits on positive entries の値が 64 で、キャッシュヒット率は 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