NDB
カーネルは、すべてのトランスポータが共有するプールからメモリーが動的に割り当てられる統合送信バッファーを採用します。
これにより、送信バッファーのサイズを必要に応じて調整できます。
統合された送信バッファーの構成は、次のパラメータを設定すると実現できます。
-
TotalSendBufferMemory. このパラメータは、すべてのタイプの NDB Cluster ノードに対して設定できます。つまり、
config.ini
ファイルの[ndbd]
、[mgm]
、および[api]
(または[mysql]
) セクションで設定できます。 これは、各ノードによって割り当てられ、すべての構成済みトランスポータ間での使用に設定されるメモリーの合計量 (バイト単位) を表します。 設定する場合、その最小は 256K バイト、最大は 4294967039 です。既存の構成との下位互換性を確保するため、このパラメータのデフォルト値は、すべての構成済みトランスポータの最大送信バッファーサイズの合計にトランスポータあたり 32K バイト (1 ページ) を加えた値になっています。 最大は、次の表に示すように、トランスポータのタイプによって異なります。
これにより、NDB Cluster 6.3 以前の場合とほぼ同じ方法で、同じ量のメモリーを使用して既存の構成を機能させ、各トランスポータで使用可能なバッファースペースを送信できます。 ただし、特定のトランスポータで使用されていないメモリーは、ほかのトランスポータでも使用できません。
OverloadLimit. このパラメータは、
config.ini
ファイルの[tcp]
セクションで使用され、接続が過負荷状態であるとみなされる前に送信バッファーに存在する未送信データの量 (バイト単位) を表します。 このような過負荷状態が発生すると、過負荷の接続に影響を与えるトランザクションが失敗し、過負荷のステータスが終了するまで次のエラーが発生します: NDB API エラー 1218 (Send Buffers overloaded in NDB kernel)。 デフォルト値は 0 です。その場合、特定の接続に対する実質的な過負荷の制限はSendBufferMemory * 0.8
として計算されます。 このパラメータの最大値は 4G です。SendBufferMemory. この値は、単一のトランスポータが
TotalSendBufferMemory
で指定されたプール全体から使用できるメモリー量に対する厳密な制限を表します。 ただし、すべての構成済みトランスポータのSendBufferMemory
の合計は、特定のノードに対して設定されたTotalSendBufferMemory
より大きくなることがあります。 多数のノードが使用されているときは、すべてのトランスポータがメモリーの最大量を同時に必要としないかぎり、このような方法でメモリーが節約されます。
ndbinfo.transporters
テーブルを使用して、送信バッファのメモリー使用量を監視し、パフォーマンスに悪影響を与える可能性のある低速および過負荷状態を検出できます。