Open ftnext opened 4 years ago
Hypercornを例にHTTP/2のマルチストリームの紹介。 ASGIだけでなくWSGIでもHypercornが動かせる (ASGIというとFastAPIやDjango3以降の話と思いがちだが、Django2以前のWSGIでもHypercornを使える)
https://hiroshima.pycon.jp/2020/speaker/JunyaFff
Junya Fukudaさん
2020/10/10
ASGIとは
※渋川さんの『Real World HTTP』を思い出す
HTTP/1.1はリクエストが完了するまで次のリクエストを送れない(順番を保つ仕様) ブラウザでTCPのコネクションを増やす(Chromeでは6本) 情報の増えたWebサイトとアンマッチ
TCPコネクションに仮想のソケットを作って通信。 並列に処理できる
awesome-asgiに例がある uvicornはHTTP/2は対応予定 hypercornはHTTP/2に対応している
Hypercorn gunicorn インスパイア worker数指定できる
Hypercorn JavaScriptアクセス(Promiseで待つ)
アプリサーバはFastAPI async(コルーチン) awaitで3秒待つ
HTTP/1.1 3秒が6つ同時に処理 4セット(12秒)
HTTP/2 3秒で24本同時に処理
h2loadコマンドでパフォーマンス比較 https://qiita.com/t-iguchi/items/d77018b297b0dbe80a9d
クライアント10、リクエスト数100だとHTTP/1.1の方が若干早い →h2load -mでstreamを指定できる。指定して検証
h2load -m
HTTP/2 リクエストの多重化の恩恵を確認 1回のアクセスで複数回サーバへリクエストする場合 例:チャットアプリ
速度改善の可能性(fetchやxhrが多い場合)
gunicornでもHTTP/2は使える? →hypercornにすると速度カイゼンするかも
ASGI WebサーバはWSGI対応している Django 2でもHypercorn入れられる
[以下はオプション]
一言でいうと
Hypercornを例にHTTP/2のマルチストリームの紹介。 ASGIだけでなくWSGIでもHypercornが動かせる (ASGIというとFastAPIやDjango3以降の話と思いがちだが、Django2以前のWSGIでもHypercornを使える)
発表資料リンク
https://hiroshima.pycon.jp/2020/speaker/JunyaFff
発表者/所属
Junya Fukudaさん
発表日付
2020/10/10
概要
ASGIとは
HTTP/2
※渋川さんの『Real World HTTP』を思い出す
HTTP/1.1はリクエストが完了するまで次のリクエストを送れない(順番を保つ仕様) ブラウザでTCPのコネクションを増やす(Chromeでは6本) 情報の増えたWebサイトとアンマッチ
TCPコネクションに仮想のソケットを作って通信。 並列に処理できる
awesome-asgiに例がある uvicornはHTTP/2は対応予定 hypercornはHTTP/2に対応している
Hypercorn gunicorn インスパイア worker数指定できる
実験
Hypercorn JavaScriptアクセス(Promiseで待つ)
アプリサーバはFastAPI async(コルーチン) awaitで3秒待つ
HTTP/1.1 3秒が6つ同時に処理 4セット(12秒)
HTTP/2 3秒で24本同時に処理
h2loadコマンドでパフォーマンス比較 https://qiita.com/t-iguchi/items/d77018b297b0dbe80a9d
クライアント10、リクエスト数100だとHTTP/1.1の方が若干早い →
h2load -m
でstreamを指定できる。指定して検証HTTP/2 リクエストの多重化の恩恵を確認 1回のアクセスで複数回サーバへリクエストする場合 例:チャットアプリ
速度改善の可能性(fetchやxhrが多い場合)
gunicornでもHTTP/2は使える? →hypercornにすると速度カイゼンするかも
ASGI WebサーバはWSGI対応している Django 2でもHypercorn入れられる
[以下はオプション]
新規性・差分
トークで知って試したいこと
感想