{"id":410,"date":"2017-10-20T13:00:00","date_gmt":"2017-10-20T04:00:00","guid":{"rendered":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/blog\/2017\/10\/20\/number_of_goroutine"},"modified":"2017-10-20T13:00:00","modified_gmt":"2017-10-20T04:00:00","slug":"number_of_goroutine","status":"publish","type":"post","link":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/blog\/2017\/10\/20\/number_of_goroutine\/","title":{"rendered":"goroutine\u306e\u6700\u9069\u306a\u6570\u306b\u3064\u3044\u3066\u8003\u3048\u305f"},"content":{"rendered":"

\u682a\u5f0f\u4f1a\u793eMMM\u306e\u67f3\u6cbc\u3068\u7533\u3057\u307e\u3059\u3002\u597d\u304d\u306a\u30ea\u30fc\u30b8\u30e7\u30f3\u306f\u6771\u4eac\u30ea\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002<\/p>\n

\u5f0a\u793e\u3067\u306fGo\u8a00\u8a9e\u3092\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u3067\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002
\nGo\u8a00\u8a9e\u306e\u7279\u5fb4\u306e\u3072\u3068\u3064\u306b\u3001 goroutine<\/code> \u3092\u4f7f\u3063\u3066\u4e26\u5217\u51e6\u7406\u3092\u5bb9\u6613\u306b\u66f8\u3051\u308b\u3001\u3068\u3044\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e26\u5217\u51e6\u7406\u3063\u3066\u540c\u6642\u306b\u3044\u304f\u3064\u8d70\u3089\u305b\u308c\u3070\u3044\u3044\u306e\u304b\uff1f\u306b\u3064\u3044\u3066\u8003\u3048\u307e\u3057\u305f\u3002
\n\u307e\u3060\u8a66\u884c\u932f\u8aa4\u3057\u3066\u3044\u308b\u6700\u4e2d\u3067\u3001\u5185\u5bb9\u306b\u9593\u9055\u3044\u30fb\u3082\u3063\u3068\u3053\u3046\u3059\u308b\u3068\u3044\u3044\u3088\uff01\u306a\u3069\u304c\u3042\u308c\u3070\u6559\u3048\u3066\u3044\u305f\u3060\u3051\u308b\u3068\u52a9\u304b\u308a\u307e\u3059\u3002m(_ _)m
\n\u307e\u305f\u3001\u5b9f\u969bgoroutine\u3092\u4f7f\u3063\u305f\u51e6\u7406\u3092\u5b9f\u88c5\u3059\u308b\u3068\u304d\u306fsync.WaitGroup\u3092\u4f7f\u3046\u3053\u3068\u304c\u591a\u3044\u3068\u601d\u3046\u306e\u3067\u3001\u8a18\u4e8b\u5185\u3067\u3082\u3061\u3087\u3053\u3061\u3087\u3053\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n

\u3088\u304f\u898b\u308b\u3084\u308a\u65b9<\/h3>\n

CPU\u6570\u3092\u4f7f\u3046\u3001\u3068\u3044\u3046\u306e\u3092\u5272\u308a\u3068\u3088\u304f\u898b\u307e\u3059(\u305f\u3076\u3093)\u3002<\/p>\n

func main() {\n    fmt.Println("Start")\n    loop("A")\n    fmt.Println("Finish")\n}\n\n\/\/ \u30d8\u30d3\u30fc\u306a\u51e6\u7406\nfunc loop(val string) {\n    wg := &sync.WaitGroup{}\n    for i := 0; i < 10; i++ {\n        wg.Add(1)\n        go func() {\n            fmt.Println(val)\n            wg.Done()\n        }()\n    }\n    wg.Wait()\n}<\/code><\/pre>\n

\u3053\u3046\u3044\u3046Go\u306e\u30b3\u30fc\u30c9\u304c\u3042\u3063\u305f\u3068\u304d\u306b\u3001<\/p>\n

func main() {\n    fmt.Println("Start")\n    loop("A")\n    fmt.Println("Finish")\n}\n\n\/\/ \u30d8\u30d3\u30fc\u306a\u51e6\u7406\nfunc loop(val string) {\n    wg := &sync.WaitGroup{}\n    cpus := runtime.NumCPU() \/\/ CPU\u306e\u6570\n    semaphore := make(chan int, cpus)\n    for i := 0; i < 10; i++ {\n        wg.Add(1)\n        go func() {\n            defer wg.Done()\n            semaphore <- 1\n            fmt.Println(val)\n            <- semaphore\n        }()\n    }\n    wg.Wait()\n}<\/code><\/pre>\n

\u3053\u3046\u3059\u308b\u3053\u3068\u3067\u3001 NumCPU<\/code> \u307e\u3067\u306bgoroutine\u306e\u6570\u304c\u5236\u9650\u3055\u308c\u307e\u3059\u3002<\/p>\n

Go1.5\u4ee5\u524d\u3060\u3068 <\/p>\n

cpus := runtime.NumCPU()\nruntime.GOMAXPROCS(cpus)<\/code><\/pre>\n

\u307f\u305f\u3044\u306b\u3084\u3063\u3066\u308b\u306e\u304c\u591a\u3044\u3067\u3059\u3002\u5f53\u6642\u306fGOMAXPROCS\u304c\u81ea\u52d5\u3067\u9069\u5207\u306a\u5024\u304c\u8d70\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3068\u306e\u3053\u3068\u3067\u3059\u3002(\u7b46\u8005\u306fGo1.8\u304b\u3089Golang\u30c7\u30d3\u30e5\u30fc\u3057\u307e\u3057\u305f\u3002)<\/p>\n

NumCPU\u3092\u8abf\u3079\u3066\u307f\u308b<\/h3>\n

godoc<\/a>\u3067NumCPU\u306e\u8aac\u660e\u3092\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n

func NumCPU() int\n\nNumCPU returns the number of logical CPUs usable by the current process.\n\nThe set of available CPUs is checked by querying the operating system at process startup. Changes to operating system CPU allocation after process startup are not reflected.<\/code><\/pre>\n

\u4ee5\u4e0b\u306f\u7b46\u8005\u306e\u8a33\u3067\u3059\u3002<\/p>\n

NumCPU\u306f\u73fe\u5728\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3088\u3063\u3066\u4f7f\u7528\u53ef\u80fd\u306a\u8ad6\u7406CPU\u306e\u6570\u3092\u8fd4\u3059\u3002\n\n\u5229\u7528\u53ef\u80fd\u306aCPU\u306e\u30bb\u30c3\u30c8\u306f\u30d7\u30ed\u30bb\u30b9\u306e\u8d77\u52d5\u6642\u306bOS\u306b\u554f\u3044\u5408\u308f\u305b\u3059\u308b\u3053\u3068\u3067\u691c\u67fb\u3055\u308c\u308b\u3002\n\u30d7\u30ed\u30bb\u30b9\u8d77\u52d5\u5f8c\u306eOS\u306eCPU\u306e\u5272\u308a\u632f\u308a\u306b\u5bfe\u3059\u308b\u5909\u66f4\u306f\u53cd\u6620\u3055\u308c\u306a\u3044\u3002<\/code><\/pre>\n

\u3068\u3042\u308a\u307e\u3059\u3002
\n\u30d7\u30ed\u30bb\u30b9\u304c\u4e0a\u304c\u3063\u3066\u304b\u3089CPU\u6570\u304c\u5909\u308f\u308b\u30b1\u30fc\u30b9\u306f\u3068\u308a\u3042\u3048\u305a\u8003\u3048\u306a\u304f\u3066OK\u3068\u3044\u3046\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n

NumCPU\u306e\u5b9f\u88c5\u306f\u3053\u3061\u3089<\/a>\u306b\u3042\u308b\u306e\u3067\u3001\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n

func NumCPU() int {\n      return int(ncpu)\n}<\/code><\/pre>\n

ncpu<\/code> \u3068\u3044\u3046\u5909\u6570\u304c\u51fa\u3066\u304d\u305f\u306e\u3067\u3001\u8abf\u3079\u307e\u3057\u305f\u3002
\n
runtimes.os_darwin.go<\/a>\u306b\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n

func getncpu() int32 {\n      \/\/ Use sysctl to fetch hw.ncpu.\n      mib := [2]uint32{_CTL_HW, _HW_NCPU}\n      out := uint32(0)\n      nout := unsafe.Sizeof(out)\n      ret := sysctl(&mib[0], 2, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0)\n      if ret >= 0 && int32(out) > 0 {\n          return int32(out)\n      }\n      return 1\n  }<\/code><\/pre>\n

\u30b3\u30e1\u30f3\u30c8\u306b\u3042\u308b\u901a\u308a\u3001 sysctl<\/code> \u3067 hw.ncpu<\/code> \u3092\u53d6\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002
\n\u8a66\u3057\u306b\u3001\u304a\u624b\u5143\u306eMac\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u53e9\u3044\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002CPU\u306e\u30b3\u30a2\u6570\u304c\u53d6\u5f97\u3067\u304d\u307e\u3059\u306d\u3002
\n(\u3053\u3061\u3089\u306e\u30b3\u30de\u30f3\u30c9\u306fMac\u524d\u63d0\u3067\u3059\u3002)<\/p>\n

$ sysctl -n hw.ncpu\n4<\/code><\/pre>\n

\u7b46\u8005\u306e\u30de\u30b7\u30f3\u3067\u306f4\u3067\u3057\u305f\u3002<\/p>\n

\"\"<\/p>\n

\u7b46\u8005\u306eMac\u306e\u30d7\u30ed\u30bb\u30c3\u30b5\u306f 2.2 GHz Intel Core i7<\/code> \u3089\u3057\u3044\u3067\u3059\u3002
\n\u8abf\u3079\u3066\u307f\u305f\u3068\u3053\u308d\u3001\u305f\u3076\u3093
\u3053\u308c<\/a>\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n

\"\"<\/p>\n

\u30e1\u30fc\u30ab\u30fc\u60c5\u5831\u3067\u3082\u3061\u3083\u3093\u30684\u3067\u3057\u305f\u3002<\/p>\n

Go\u304b\u3089\u3082\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n

package main\n\nimport (\n  "fmt"\n  "runtime"\n)\n\nfunc main() {\n  fmt.Println(runtime.NumCPU())\n}<\/code><\/pre>\n
$ go run main.go\n4<\/code><\/pre>\n

\u3053\u3053\u307e\u3067\u3067\u308f\u304b\u308b\u3053\u3068<\/h3>\n

\u7b46\u8005\u306e\u30de\u30b7\u30f3\u306eNumCPU\u304c4\u3068\u3044\u3046\u3053\u3068\u306f\u3001NumCPU\u3092\u3082\u3068\u306bgoroutine\u306e\u6570\u3092\u5236\u9650\u3059\u308b\u3068\u3001
\ngoroutine\u306f4\u3064\u306b\u5236\u9650\u3055\u308c\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n

\u30e1\u30e2\u30ea\u306e\u89b3\u70b9\u3067\u8003\u3048\u308b<\/h3>\n

64bit\u30de\u30b7\u30f3\u4e0a\u306eLinux\u306e\u5834\u5408\u3001\u3072\u3068\u3064\u306e\u30d7\u30ed\u30bb\u30b9\u306b2^64byte(18.4467441 exabytes)\u306e\u4eee\u60f3\u30e1\u30e2\u30ea\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002(\u3044\u3063\u305f\u3093\u5225\u30d7\u30ed\u30bb\u30b9\u304c\u4f7f\u3046\u7269\u7406\u30e1\u30e2\u30ea\u306f\u8003\u3048\u305a\u3001Go\u304c\u4f7f\u3048\u308b\u5b9f\u969b\u306e\u7269\u7406\u30e1\u30e2\u30ea\u306f\u6f64\u6ca2\u306b\u3042\u308b\u3082\u306e\u3068\u3057\u307e\u3059\u3002)<\/p>\n

\u6709\u540d\u306a\u3053\u3061\u3089<\/a>\u3092\u4f7f\u3063\u3066\u3001\u5404goroutine\u3067\u4f7f\u3046\u30e1\u30e2\u30ea\u3092\u8868\u793a\u3055\u305b\u3066\u307f\u307e\u3057\u305f\u3002\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3053\u3061\u3089<\/a>\u304b\u3089\u3082\u8a66\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n

\u7b46\u8005\u306e\u74b0\u5883\u306fGo1.9\u3067\u3059\u3002<\/p>\n

$ go version\ngo version go1.9 darwin\/amd64<\/code><\/pre>\n
$ go run main.go\nNumber of goroutines: 100000\nPer goroutine:\n  Memory: 2719.15 bytes\n  Time:   2.285060 \u00b5s<\/code><\/pre>\n

Per goroutine<\/code> \u306e Memory<\/code> \u306f2719byte\u3067\u3057\u305f\u3002
\n\u3053\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3001\u5185\u90e8\u3067\u306f\u6570\u5024\u3092\u30a4\u30f3\u30af\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u308b\u3060\u3051\u306e\u3082\u306e\u3067\u3059\u3002
\n\u3082\u3061\u308d\u3093\u30ed\u30b8\u30c3\u30af\u306b\u3088\u3063\u3066\u306f\u3088\u308a\u591a\u304f\u306e\u30e1\u30e2\u30ea\u3092\u4f7f\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001goroutine\u306e\u6570\u3092\u4eee\u306b4\u306b\u5897\u3084\u3057\u3066\u3082\u30012017\u5e74\u306b\u6211\u3005\u304c\u4f7f\u3046\u3088\u3046\u306a\u666e\u901a\u306e\u30de\u30b7\u30f3\u3067\u3042\u308c\u3070\u3001\u30e1\u30e2\u30ea\u30cd\u30c3\u30af\u306b\u306a\u308b\u53ef\u80fd\u6027\u306f\u4f4e\u3044\u3068\u8a00\u3048\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n

CPU\u306e\u89b3\u70b9\u3067\u8003\u3048\u308b<\/h3>\n

\u30b3\u30a2\u6570\u304c4\u306e\u30de\u30b7\u30f3\u306e\u5834\u5408\u30014\u3064\u306e\u30b3\u30a2\u306f\u4e26\u5217\u306b\u52d5\u4f5c\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
\ngoroutine\u3082parallel\u3067\u52d5\u304d\u307e\u3059\u304c\u3001OS\u30ec\u30d9\u30eb\u3067\u898b\u308b\u3068\u30d7\u30ed\u30bb\u30b9\u5185\u3067concurrent\u306b\u52d5\u3044\u3066\u3044\u307e\u3059(\u305f\u3076\u3093)\u3002
\ngoroutine\u306e\u6570\u304c\u30e1\u30e2\u30ea\u30cd\u30c3\u30af\u306b\u306a\u3089\u306a\u304b\u3063\u305f\u3068\u3057\u3066\u3082\u3001\u5404\u30b9\u30ec\u30c3\u30c9\u306f\u9650\u3089\u308c\u305fCPU\u3092\u9806\u756a\u306b\u4f7f\u3046\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002
\n\u3064\u307e\u308a\u3001goroutine\u3067CPU\u304c\u591a\u304f\u4f7f\u308f\u308c\u308b\u51e6\u7406(\u8a08\u7b97\u51e6\u7406\u306a\u3069)\u3092\u6570\u591a\u304f\u56de\u3057\u305f\u5834\u5408\u3001CPU\u30cd\u30c3\u30af\u3067\u52d5\u4f5c\u304c\u9045\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n

\u305d\u306e\u4ed6\u306e\u89b3\u70b9\u3067\u8003\u3048\u308b<\/h3>\n

\u30c7\u30a3\u30b9\u30afIO\u30fb\u30cd\u30c3\u30c8\u30ef\u30fc\u30afIO\u7b49\u304c\u30b7\u30b9\u30c6\u30e0\u306e\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306b\u306a\u308b\u3053\u3068\u306f\u591a\u304f\u3042\u308a\u307e\u3059\u3002
\n\u30e1\u30e2\u30ea\u30fbCPU\u306b\u4f59\u88d5\u304c\u3042\u3063\u305f\u3068\u3057\u3066\u3082\u3001\u30c7\u30a3\u30b9\u30af\u3078\u306e\u66f8\u304d\u8fbc\u307f\u304c\u591a\u3044\u30fb\u30ec\u30a4\u30c6\u30f3\u30b7\u30fc\u304c\u5927\u304d\u3044\u306a\u3069\u306e\u8981\u56e0\u3067\u3001goroutine\u304c\u6709\u52b9\u306b\u4f7f\u3048\u306a\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n

\u5b9f\u969b\u306b\u8a08\u6e2c\u3057\u3066\u307f\u305f<\/h3>\n

EC2\u4e0a\u306eGo\u30d7\u30ed\u30bb\u30b9\u3067\u3001S3\u304b\u30891000\u4ef6\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001ZIP\u5316\u3057\u3066\u30e6\u30fc\u30b6\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3059\u308b\u3068\u3044\u3046\u30b1\u30fc\u30b9\u3092\u984c\u6750\u306b\u3001\u8a66\u884c\u932f\u8aa4\u3057\u3066\u307f\u307e\u3057\u305f\u3002
\n\u51e6\u7406\u306e\u6d41\u308c\u3068\u3057\u3066\u306f\u3001<\/p>\n

    \n
  • \u30ed\u30fc\u30ab\u30eb\u306b\u7a7a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u308b(os.Create)<\/li>\n
  • S3\u306eAPI\u3092\u4f7f\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u30ea\u30af\u30a8\u30b9\u30c8<\/li>\n
  • DL\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u30ed\u30fc\u30ab\u30eb\u306b\u66f8\u304d\u8fbc\u307e\u308c\u308b<\/li>\n<\/ul>\n

    \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u51e6\u7406\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306b\u3082\u3088\u308a\u307e\u3059\u304c\u30cd\u30c3\u30c8\u30ef\u30fc\u30afIO\u306b\u3088\u308b\u8ca0\u8377\u304c\u5927\u304d\u3044\u3068\u4e88\u60f3\u3055\u308c\u307e\u3059\u3002
    \n\u307e\u305f\u3001EC2\u304b\u3089EBS\u306b\u66f8\u304d\u8fbc\u3080\u969b\u3001\u5185\u90e8\u7684\u306b\u306fEBS\u3078\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3044\u308b(EBS\u306fPIOPS\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u305b\u3093\u3002)\u305f\u3081\u3001\u305d\u3053\u3067\u3082\u308f\u305a\u304b\u306b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a2\u30af\u30bb\u30b9\u304c\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u3002
    \n\u5f53\u7136\u3067\u3059\u304c\u3001\u30c7\u30a3\u30b9\u30afIO\u3082\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n

    \u3053\u306e\u51e6\u7406\u3092\u3001goroutine\u3067\u4e26\u5217\u5b9f\u884c\u3057\u307e\u3057\u305f\u3002<\/p>\n

    \u7d50\u8ad6\u3068\u3057\u3066\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3057\u305f\u3002<\/p>\n\n\n\n\n\n\n\n\n
    goroutine\u6570<\/th>\n\u79d2\u6570<\/th>\n<\/tr>\n<\/thead>\n
    2<\/td>\n245<\/td>\n<\/tr>\n
    20<\/td>\n143<\/td>\n<\/tr>\n
    50<\/td>\n50<\/td>\n<\/tr>\n
    100<\/td>\n87<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

    \u307e\u305f\u3001\u51e6\u7406\u4e2d\u306b\u30b5\u30fc\u30d0\u5185\u3067 top<\/code> \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066CPU\u4f7f\u7528\u7387\u3092\u8a08\u6e2c\u3057\u307e\u3057\u305f\u3002
    \nCPU\u4f7f\u7528\u7387(user)\u306f\u5e38\u664215~25%\u3092\u63a8\u79fb\u3057\u3066\u3044\u307e\u3057\u305f\u3002
    \nCPU\u30cd\u30c3\u30af\u306b\u306f\u306a\u3063\u3066\u3044\u306a\u3044\u3088\u3046\u3067\u3059\u3002<\/p>\n

    50\u307e\u3067\u306f\u9806\u8abf\u306b\u65e9\u304f\u306a\u308a\u307e\u3057\u305f\u304c\u3001100\u3067\u9006\u306b\u9045\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002<\/p>\n

    \u307e\u3068\u3081<\/h3>\n

    \u4eca\u56de\u306f\u3088\u308a\u7a81\u3063\u8fbc\u3093\u3060\u539f\u56e0\u7a76\u660e\u306f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002
    \ngoroutine\u3092\u5897\u3084\u3057\u3066\u3082\u51e6\u7406\u901f\u5ea6\u304c\u4e0a\u304c\u308b\u3068\u306f\u9650\u3089\u306a\u3044\u3068\u306f\u8272\u3093\u306a\u6240\u3067\u8a00\u308f\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u8a66\u3057\u3066\u307f\u308b\u3068\u7406\u89e3\u304c\u65e9\u304b\u3063\u305f\u3067\u3059\u3002
    \ngoroutine\u306e\u6570\u306f\u3064\u3044CPU\u306e\u30b3\u30a2\u6570\u3067\u5236\u9650\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u304c\u3001\u51e6\u7406\u306e\u5185\u5bb9\u30fbCPU\u30fbIO\u3092\u9451\u307f\u3066\u3001\u5b9f\u969b\u306b\u8a08\u6e2c\u3057\u306a\u304c\u3089\u6700\u9069\u306a\u6570\u3092\u898b\u3064\u3051\u308b\u306e\u304c\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"

    \u682a\u5f0f\u4f1a\u793eMMM\u306e\u67f3\u6cbc\u3068\u7533\u3057\u307e\u3059\u3002\u597d\u304d\u306a\u30ea\u30fc\u30b8\u30e7\u30f3\u306f\u6771\u4eac\u30ea\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002 \u5f0a\u793e\u3067\u306fGo\u8a00\u8a9e\u3092\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u3067\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002 Go\u8a00\u8a9e\u306e\u7279\u5fb4\u306e\u3072\u3068\u3064\u306b\u3001 goroutine \u3092\u4f7f\u3063\u3066\u4e26\u5217\u51e6\u7406\u3092\u5bb9\u6613\u306b\u66f8\u3051\u308b\u3001\u3068\u3044\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e26\u5217\u51e6\u7406\u3063\u3066\u540c\u6642\u306b\u3044\u304f\u3064\u8d70\u3089\u305b\u308c\u3070\u3044\u3044\u306e\u304b\uff1f\u306b\u3064\u3044\u3066\u8003\u3048\u307e\u3057\u305f\u3002 \u307e\u3060\u8a66\u884c\u932f\u8aa4\u3057\u3066\u3044\u308b\u6700\u4e2d\u3067\u3001\u5185\u5bb9\u306b\u9593\u9055\u3044\u30fb\u3082\u3063\u3068\u3053\u3046\u3059\u308b\u3068\u3044\u3044\u3088\uff01\u306a\u3069\u304c\u3042\u308c\u3070\u6559\u3048\u3066\u3044\u305f\u3060\u3051\u308b\u3068\u52a9\u304b\u308a […]<\/p>\n","protected":false},"author":1,"featured_media":826,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[9],"tags":[128],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/posts\/410"}],"collection":[{"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/comments?post=410"}],"version-history":[{"count":0,"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/posts\/410\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/media\/826"}],"wp:attachment":[{"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/media?parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/categories?post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/p-corporate-blog-cms.mmmcorp.co.jp\/wp-json\/wp\/v2\/tags?post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}