ftnext / PyConTalkSummary

PyConで聞いたトークのサマリーをIssueに蓄積(arXivTimesリスペクト)
0 stars 0 forks source link

[mini Hiro 2020] HTTP/2とASGI Webサーバの関係 - Hypercornを例に #35

Open ftnext opened 4 years ago

ftnext commented 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とは

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入れられる


[以下はオプション]

新規性・差分

トークで知って試したいこと

感想