1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Oracle] SEND_BUF_SIZEとRECV_BUF_SIZE設定時のWindowサイズの変化

Last updated at Posted at 2019-07-08

カーネルパラメータ

  • net.core.rmem_max
  • net.core.wmem_max

と、
sqlnet.ora(またはtnsnames.ora)に指定する以下のオプション

  • SEND_BUF_SIZE
  • RECV_BUF_SIZE

両方ともTCP受信/送信バッファの最大値を設定するパラメータとあり、SEND_BUF_SIZE/RECV_BUF_SIZEを設定する意義がわからなかったので、検証してみた。

結論からいうと、[SEND|RECV]_BUF_SIZEの設定有無にかかわらずnet.core.[r|w]membmaxを上限にWindowサイズが自動調整された。ただし、[SEND|RECV]_BUF_SIZEを指定した場合は、設定した値までWindowサイズがどんどん増加していく。net.core.[r|w]membmaxのみの場合は、ある程度のサイズで収束する。

検証環境

環境1

  • OEL 6.10 (UEK4)
  • DB 11.2.0.4 (環境2へDBリンク)

環境2

  • CentOS 6.10
  • DB 11.2.0.4
    環境1と環境2の間でDBリンクを張る。環境1と環境2の間のレイテンシ(ping応答時間)は30ms程度
    環境1にSQL*Plusでログインし、環境2のテーブルをDBリンクを使用してSelectする。
    環境2側で、tcpdumpを取得し、Windowサイズの変化を見る。

結果

赤線が設定なし。青線がRECV_BUF_SIZEを1MBに設定。オレンジがRECV_BUF_SIZEを2MBに設定した場合のWindowサイズの変化。RECV_BUF_SIZEを設定した場合は、初期値は一緒だけど、指定した値までどんどん上昇していくのがわかる。
image.png

windowサイズは、tcpdumpのwin列に2のwscale乗をかけた値で算出。wscaleはスリーウェイ・ハンドシェイクからキャプチャしないと値を取得できないので注意

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?