|
@@ -2,16 +2,20 @@ package main
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"battlecamp-go-server/board"
|
|
"battlecamp-go-server/board"
|
|
|
|
|
+ "flag"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"log"
|
|
"log"
|
|
|
"net"
|
|
"net"
|
|
|
"net/http"
|
|
"net/http"
|
|
|
"os"
|
|
"os"
|
|
|
|
|
+ "runtime/pprof"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
|
|
|
|
|
"golang.org/x/net/netutil"
|
|
"golang.org/x/net/netutil"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
|
|
|
|
|
+
|
|
|
func main() {
|
|
func main() {
|
|
|
fmt.Println("Board generator version 0.1")
|
|
fmt.Println("Board generator version 0.1")
|
|
|
logFile, err := os.Create("server.log")
|
|
logFile, err := os.Create("server.log")
|
|
@@ -23,8 +27,11 @@ func main() {
|
|
|
log.Printf("%v=n", err)
|
|
log.Printf("%v=n", err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ initCpuProfiler()
|
|
|
|
|
+
|
|
|
http.HandleFunc("/", gzipHandler(generateBoard))
|
|
http.HandleFunc("/", gzipHandler(generateBoard))
|
|
|
http.HandleFunc("/status", status)
|
|
http.HandleFunc("/status", status)
|
|
|
|
|
+ http.HandleFunc("/debug/profiledump", profileDump)
|
|
|
l, _ := net.Listen("tcp", ":8081")
|
|
l, _ := net.Listen("tcp", ":8081")
|
|
|
limitListerer := netutil.LimitListener(l, 100)
|
|
limitListerer := netutil.LimitListener(l, 100)
|
|
|
log.Fatal(http.Serve(limitListerer, nil))
|
|
log.Fatal(http.Serve(limitListerer, nil))
|
|
@@ -45,3 +52,19 @@ func generateBoard(w http.ResponseWriter, r *http.Request) {
|
|
|
func status(w http.ResponseWriter, r *http.Request) {
|
|
func status(w http.ResponseWriter, r *http.Request) {
|
|
|
w.Write([]byte("ok"))
|
|
w.Write([]byte("ok"))
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+func profileDump(w http.ResponseWriter, req *http.Request) {
|
|
|
|
|
+ log.Println("Dumping cpu profile")
|
|
|
|
|
+ pprof.StopCPUProfile()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func initCpuProfiler() {
|
|
|
|
|
+ flag.Parse()
|
|
|
|
|
+ if *cpuprofile != "" {
|
|
|
|
|
+ f, err := os.Create(*cpuprofile)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatal(err)
|
|
|
|
|
+ }
|
|
|
|
|
+ pprof.StartCPUProfile(f)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|