続行する前に、各SNの初期設定時にネットワーク・インタフェース・カードが予定どおりに構成されているかどうか確認することをお薦めします。これは、そのような構成の問題がロード時に発生した場合、問題をデバッグするのが困難になるためです。
各ホスト上の特定のサブネットにアクセスするために使用されているネットワーク・インタフェースを判断するには、次のコマンドを使用します。このコマンドは、特に複数のNICを持つマシンに役立ちます。
$ ip addr ls to 192.168/16 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.1.19/24 brd 192.168.1.255 scope global eth0
NICの構成に関する情報を取得するには、次のコマンドを使用します。
$ ethtool -i eth2 driver: enic version: 2.1.1.13 firmware-version: 2.0(2g) bus-info: 0000:0b:00.0
NICハードウェアに関する情報を取得するには、次のコマンドを使用します。
$ lspci -v | grep "Ethernet controller" 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
ネットワーク速度に関する情報を取得するには、次のコマンドを使用します。このコマンドはsudoを必要とすることに注意してください。
$ sudo ethtool eth0 | grep Speed Speed: 1000Mb/s
大規模なクラスタのパフォーマンスを改善するために、10GBのイーサネットまたは他の高速なネットワーク実装の使用を検討することもできます。
デフォルトの一般的な最大サーバー・ソケット・バックログ(通常は128に設定)は、サーバー・スタイルのロードには小さすぎます。サーバー・アプリケーションの場合は少なくとも1K、大規模なストアの場合は10Kでも不適切ではありません。
この値を変更するには、sysctl.conf
でnet.core.somaxconn
プロパティを設定します。
マシンに複数のネットワーク・インタフェースがある場合、一方のインタフェースでHAレプリケーション・トラフィックを分離し、クライアント要求トラフィックは別のインタフェースを使用するようにOracle NoSQL Databaseを構成できます。次の例のように、HAで使用されるインタフェースを指定するには、makebootconfig
コマンドに対して-hahost
パラメータを使用します。
java -Xmx256m -Xms256m \ -jar kvstore.jar makebootconfig -root /disk1/kvroot \ -host sn10.example.com -port 5000 -harange 5010,5020 \ -storagedir /disk2/kv -hahost sn10-ha.example.com
この例では、すべてのクライアント要求がsn10.example.com
に関連付けられたインタフェースを使用し、HAトラフィックはsn10-ha.example.com
に関連付けられたインタフェースを使用します。
単一のキュー・ネットワーク・デバイスを持つマシンに複数のRNがある場合、受信パケット・ステアリング(RPS)では、複数のコア間のパケット処理(ソフト割込み処理)に関連付けられたCPU負荷を分散することでパフォーマンスを改善できます。複数キューのNICではこのようなサポートが直接用意されているため、RPSを有効にする必要はありません。
このチューニングに関する注意事項は、Oracle Big Data Applianceを使用するお客様に特に適しています。
次のコマンドを使用して、NICが複数キューかどうかを判断できます。
sudo ethtool -S eth0
複数キューのNICには次のようなエントリがあります。
rx_queue_0_packets: 271623830 rx_queue_0_bytes: 186279293607 rx_queue_0_drops: 0 rx_queue_0_csum_err: 0 rx_queue_0_alloc_failed: 0 rx_queue_1_packets: 273350226 rx_queue_1_bytes: 188068352235 rx_queue_1_drops: 0 rx_queue_1_csum_err: 0 rx_queue_1_alloc_failed: 0 rx_queue_2_packets: 411500226 rx_queue_2_bytes: 206830029846 rx_queue_2_drops: 0 rx_queue_2_csum_err: 0 rx_queue_2_alloc_failed: 0 ...
Infinibandを使用する32コアBig Data Applianceの場合、次の構成を使用して、すべての32コア間で受信パケット処理を分散します。
echo ffffffff > /sys/class/net/eth0/queues/rx-0/rps_cpus
ffffffff
は、すべての32コアを選択するビット・マスクです。
RPSの詳細は、次を参照してください。