Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Goroutineハンター、それは逃げ出したgoroutine達を捕まえるため、日夜戦い続けるエンジニア達のことである。Goroutineハンターは本番環境でOOM Killerが発動するたびに呼び出され、逃げ出したすべてのgoroutineを捕まえるまで家にかえることが出来ない。しかし、あなたが書いた何気ないコードによって、今日もまた新しいgorutine達が野に放たれるのであった。 Goroutineリークとの戦い Goを使用してある程度規模のプログラムを書くと、必ず問題になるのがgoroutineのリークである。goで生まれたgo
高速なTCPサーバーをGolangで作りベンチマークを取っていたのですが、CPUが2コアや4コアだと100%CPUを使い切れるのに、16コアになるとCPUを100%使いきれずアイドルする現象に困っていました。16コアのサーバーを用いても実質4コア分のパフォーマンスしか出せていませんでした。 goroutine同士は干渉しないのにCPU数を上げてもスケールしないのには納得がいかず、GolangのスケジューラがCPUをブロックしているのではないかと考え、実験しました。 goroutineをスイッチするタイミングについては 意外と知らないgoroutineのスケジューラーの挙動 #golang goroutineがスイッチされるタイミング これらの記事が参考になります。 実験環境 Cloud: Degital Ocean OS: Ubuntu16.04.3 ubuntu-16 CPU: 16 C
最近Goがすっかりメジャーになってきて自分の書けるネタもなくなってきたので今年もやっぱりGAE/Goのハナシです。 GAE(Google App Engine)もGoに負けずもっと盛り上がって欲しいですね(^^; 前置き さて、今回のテーマですが・・ GAE/Goでもgoroutine使おうよ! てハナシです。 GAEの環境は残念ながらGOMAXPROCSが1になっている為1「goroutineを使っても意味がない」と考えている方もいらっしゃるかと思います。 実はうまく使えばとても強力なのです! どういうことかというと、あるgoroutineがAPI呼び出しなどでI/O待ちに入ると、他のgoroutineにスケジュールされます。 つまり、複数のAPI呼び出しをgoroutineを使うことで実質並列化することが可能なのです。 GAEは基本的にたくさんの用意されているサービス(Datastor
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く