Go言語:6万の同時HTTPリクエスト処理
1. Go言語の能力 コンパイル可能なGo言語の能力が確認できます。 同時HTTPリクエストと、最小限のRAM消費で本当に大量のリクエストを処理することができます。 ここでは、60,000の処理を試行します。 2. 制限 HTTP は TCP 上で動作するため、TCP ポートの範囲は 0 ~ 65535 です。つまり、2台のマシン間で最大65kの同時TCP接続を開くことができます。 60kの要求を同時に送信し(つまり、同時にアクティブな60kのHTTPセッションを持つことを意味します)、いくつか試行を行います。 3. 試行 サーバーに要求を受信させ、DBからの応答からの待機をシミュレートします。 “Hello” 文字列で応答します。 まず第一に、RAMの使用状況と現在のHTTPセッション数に関する統計に興味があります。uilive libを使って端末のデータを更新します。 package main import ( "fmt" "github.com/gosuri/uilive" "net/http" "runtime" "sync/atomic" "time" ) func hello(w http.ResponseWriter, req *http.Request) { ch <- true atomic.AddInt32(&count, 1) time.Sleep(time.Second * 120) _, _ = fmt.Fprintf(w, "hello\n") atomic.AddInt32(&count, -1) ch <- true } var count int32 var ch chan bool func main() { ch = make(chan bool) go func() { var m runtime.