SlideShare a Scribd company logo
1 of 11
Download to read offline
1

NW遅延環境(Paas)での
チューニングTips
河原 翔

※Linux環境に基づいた内容です
PostgreSQLアンカンファレンス@東京 (7/13)
2

NW遅延とは?
ネットワーク遅延とは、データを送信してから通信相手に届くまで
の時間と、その応答を通信相手が送信してから送信元に届くまでの合
計時間を指す。
つまりデータを入れたパケットが伝送経路を通過するのにかかる時
間(伝搬遅延)と、経路上のルーターなどの機器が処理する時間(処
理遅延)などを足し合わせたものだ。
LAN内であれば、ネットワーク遅延は1ミリ~3ミリ秒程度。しかし社
外にある国内のデータセンターとのやり取りでは十数ミリ秒、海外の
データセンターでは100ミリ秒を超えることもある。
ITproより引用
http://itpro.nikkeibp.co.jp/article/COLUMN/20121005/428005/

• 国外の会社が運営しているPaasのデータセンタは海外に
あることが多いため、NW遅延の影響を受ける可能性が高い
(Amazon等の大手は日本国内にもデータセンタがある)
3

実際にどれくらいの影響があるのか?
• 無料で利用できる「Heroku Postgres」を利用
▫ 「Heroku Postgres」の詳細は割愛
4

実際にどれくらいの影響があるのか?
• 約170msのNW遅延がある状態で、接続→SQL発行→切断の
時間を測定する

NW遅延

約170ms

さくらのVPS
大阪リージョン

$ psql "dbname=xxx-1.amazonaws.com /
user=yyy password=zzz port=5432 /
sslmode=require"
/
-c 'select * from test' > /dev/null

Heroku Postgres

=> table test;
val
----x
(1 row)
5

実際にどれくらいの影響があるのか?
• クライアントがサーバ にTCPSYNパケットを送出してから
クライアントがサーバからRSTACKパケットを受信するまでの
時間は約1400msとなった

SSLセッション確立のための
時間が大半を占める
6

実際にどれくらいの影響があるのか?
• クエリ発行前の各種コネクション確立のための時間が大半を
占めるため、初回確立後であれば、(ACK待ちが発生しなければ)
NW遅延1回分の影響のみで済む
$ psql "dbname=xxx-1.amazonaws.com user=yyy password=zzz port=5432 sslmode=require"
=> explain analyze table test;
QUERY PLAN
--------------------------------------------------------------------------Seq Scan on test (cost=0.00..1.00 rows=1 width=32)
(actual time=0.021..0.022 rows=1 loops=1)
Total runtime: 0.103 ms
(2 rows)
=> ¥timing
Timing is on.
=> table test;
val
-------x
(1 row)
Time: 183.563 ms
=>

explainではデータ転送時間は含まれない模様
※auto_explainの対象にならない

¥timingではデータ転送時間も含まれる模様
7

【対応策】
• コネクションプーリングを利用する
▫ 初回接続時の各種コネクション確立のコストを
抑えるため
 プロセス生成と終了のコストを抑えるためではない
 各種コネクション確立後であれば、ACK待ちが発生しなければ
NW遅延1回分の影響のみで済む

▫ pgpoolはVer2.3.2からSSLをサポート
▫ PgBounserはSSLは不可?
8

【対応策】
• クエリの発行回数を抑える
▫ ストアドプロシージャを利用する
 とあるOSSのブログシステムでは、画面遷移の度にクエリが
20回以上発行されることも…

▫ 一度のクエリで送受信するデータ量を増やす
 一度のINSERT文で複数レコード挿入可能なことを知らない
エンジニアも結構いるかと…
 ただし、ACK待ちは発生させないように考慮すること
9

ACK待ちとは?
TCPでは、ACKの応答確認により信頼確保されているが、パケットを送
信する度にACKを送信していてはさすがに通信速度が遅くなってしまい
ます。そこでTCPヘッダにあるウィンドウサイズを利用することにより
この問題を解決しています。ウィンドウサイズとは、ACKを待たずに一
度に送信できるデータ量のことです。
例えば、3900バイトのデータを3回に分けて送信する場合、1300バイ
トのデータを送るたびにACKを待っていると通信速度は遅いですが、
ウィンドウサイズが「3900」であることを相手側のホストに伝えた場合、
送信側はACKを待つことなく3900バイトのデータを送信することができ
ます。これにより通信速度が速まる。
※ ちなみに、Windows XPの受信ウィンドウサイズはデフォルトで
「65535」バイトとなります。ウィンドウサイズはOSにより異なります。
しかし、これではウィンドウサイズ分のデータを送信した後、ACKを
受信するまでの間、待ち時間が発生する。
「ネットワークエンジニアとして」より引用
http://www.infraexpert.com/study/tcpip11.html
10

ACK待ちを考慮する必要は?
• 1クエリでのデータ送信量が数十KB以上あるような
ケースでなければACK待ちが発生する可能性は低い
▫ 新しめのLinux Kernelは初期ウィンドウサイズが
10と大きめに設定されているため、ACK待ちは発生し
難くなっている
▫ デフォルトでsslcompressionはONであるため、
SSL接続でのデータ転送は自動的に圧縮される
 ACK待ちが発生するかを事前に計算して
正確に推測することは困難

▫ TCPのチューニングが可能であることは意識すべき
 tcp_slow_start_after_idleはoffにするとか…
11

【要点】
• コネクションプーリングを利用する
▫ 初回接続時の各種コネクション確立のコストを抑える
 プロセス生成と終了のコストを抑えるためではない

• クエリの発行回数を抑える
▫ ストアドプロシージャを利用する
▫ 一度のクエリで送受信するデータ量を増やす

• ACK待ちの影響を最小限にする
▫ 1クエリでのデータ送信量を、ACKを受信せずに
一度に送信できるデータ量以下に収めるようにする
▫ TCP初期ウィンドウサイズの大きいKernelを採用する

More Related Content

What's hot

Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
Panda Yamaki
 

What's hot (20)

サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Linux女子部 iptables復習編
Linux女子部 iptables復習編Linux女子部 iptables復習編
Linux女子部 iptables復習編
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
Hokkaido.cap#4 ケーススタディ(ネットワークの遅延と戦う:前編)
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
 
Windows Server Community Meetup #4:時刻の話 - Accurate Network Time -
Windows Server Community Meetup #4:時刻の話 - Accurate Network Time - Windows Server Community Meetup #4:時刻の話 - Accurate Network Time -
Windows Server Community Meetup #4:時刻の話 - Accurate Network Time -
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベントAzure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 

Similar to NW遅延環境(Paas)でのPostgreSQLの利用について

D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu HaraD35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
Insight Technology, Inc.
 
情報セキュリティの啓蒙と仮想ネットワーク構築 Dos
情報セキュリティの啓蒙と仮想ネットワーク構築  Dos情報セキュリティの啓蒙と仮想ネットワーク構築  Dos
情報セキュリティの啓蒙と仮想ネットワーク構築 Dos
k009c1271
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論
shigaoki
 

Similar to NW遅延環境(Paas)でのPostgreSQLの利用について (17)

Mmo game networking_1
Mmo game networking_1Mmo game networking_1
Mmo game networking_1
 
M1 gp_OneSwarm
M1 gp_OneSwarmM1 gp_OneSwarm
M1 gp_OneSwarm
 
Cloud20150802
Cloud20150802Cloud20150802
Cloud20150802
 
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu HaraD35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
D35 NonStop SQLはなぜグローバルに分散DBを構築できるのか、データの整合性を保てるのか、その深層に迫る byToshimitsu Hara
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)
 
DNS におけるセキュリティ&プライバシ動向
DNS におけるセキュリティ&プライバシ動向DNS におけるセキュリティ&プライバシ動向
DNS におけるセキュリティ&プライバシ動向
 
CpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkCpawCTF 勉強会 Network
CpawCTF 勉強会 Network
 
第三回IoT関連技術勉強会 データ通信編
第三回IoT関連技術勉強会 データ通信編第三回IoT関連技術勉強会 データ通信編
第三回IoT関連技術勉強会 データ通信編
 
情報セキュリティの啓蒙と仮想ネットワーク構築 Dos
情報セキュリティの啓蒙と仮想ネットワーク構築  Dos情報セキュリティの啓蒙と仮想ネットワーク構築  Dos
情報セキュリティの啓蒙と仮想ネットワーク構築 Dos
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論
 
システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8
 
計算機理論入門08
計算機理論入門08計算機理論入門08
計算機理論入門08
 
Ppt fukui g
Ppt fukui gPpt fukui g
Ppt fukui g
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
「Tiのソケットで待ってる」Titanium Nagoya Chatroom Vol.2
「Tiのソケットで待ってる」Titanium Nagoya Chatroom Vol.2「Tiのソケットで待ってる」Titanium Nagoya Chatroom Vol.2
「Tiのソケットで待ってる」Titanium Nagoya Chatroom Vol.2
 
20151213 kfug lt_sdn_sugihara
20151213 kfug lt_sdn_sugihara20151213 kfug lt_sdn_sugihara
20151213 kfug lt_sdn_sugihara
 
Protocol2018
Protocol2018Protocol2018
Protocol2018
 

NW遅延環境(Paas)でのPostgreSQLの利用について