title: Why in Linux, golang run Http service will automatically create multiple child processes？
body: <p>This is what I used to do the test code</p>
  
  <pre class="lang-go prettyprint-override"><code>package main
  
  import (
      "net/http"
      "time"
  )
  
  func main() {
      s := &amp;http.Server{
          Addr:           ":9301",
          ReadTimeout:    10 * time.Second,
          WriteTimeout:   10 * time.Second,
          MaxHeaderBytes: 1 &lt;&lt; 20,
      }
  
      http.HandleFunc("/line/getList", Response)
      s.ListenAndServe()
  }
  
  func Response(w http.ResponseWriter, req *http.Request)  {
  
      w.Header().Set("Content-Type", "application/json; charset=utf-8")
      w.Header().Set("Connection", "keep-alive")
      w.WriteHeader(200)
  
      for i:= 0; i &lt; 10000; i++ {
          w.Write([]byte("hello world"))
      }
  }
  </code></pre>
  
  <p>Here is the situation when the code runs</p>
  
  <p><a href="https://i.stack.imgur.com/mRZSm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/mRZSm.png" alt="htop output showing a tree with nested apptest threads"></a></p>
  
  <p>System is centos 6.5</p>
  
  <p>This normal? If not normal, how to limit golang automatically create a large number of child processes?</p>