Merge 090f3896fb
into 10c594f99f
This commit is contained in:
commit
4bb5841db9
1 changed files with 47 additions and 10 deletions
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
@ -44,11 +45,45 @@ func main() {
|
|||
|
||||
func handleSigterm(ngx *controller.NGINXController) {
|
||||
signalChan := make(chan os.Signal, 1)
|
||||
signal.Notify(signalChan, syscall.SIGTERM)
|
||||
<-signalChan
|
||||
glog.Infof("Received SIGTERM, shutting down")
|
||||
signal.Notify(signalChan, syscall.SIGTERM, syscall.SIGUSR1, syscall.SIGUSR2)
|
||||
|
||||
running := false
|
||||
srv := &http.Server{Addr: ":61234"}
|
||||
for value := range signalChan {
|
||||
glog.V(4).Infof("Received %s, shutting down\n", value.String())
|
||||
switch value {
|
||||
case syscall.SIGUSR1:
|
||||
go func() {
|
||||
if running {
|
||||
glog.V(1).Info("SIGUSR1 hited, http://:61234 pprof service running")
|
||||
return
|
||||
}
|
||||
glog.Info("SIGUSR1 hited, to start http//:61234 pprof service")
|
||||
running = true
|
||||
if err := srv.ListenAndServe(); err != nil {
|
||||
glog.Errorf("start pprof service error: %v", err)
|
||||
}
|
||||
running = false
|
||||
}()
|
||||
case syscall.SIGUSR2:
|
||||
glog.Info("SIGUSR2 hited, to stop http pprof service")
|
||||
if running {
|
||||
//go 1.8 support srv.Shutdown
|
||||
err := srv.Shutdown(nil)
|
||||
if err != nil {
|
||||
glog.Errorf("pprof stop httpserver error: %s", err)
|
||||
}
|
||||
}
|
||||
case syscall.SIGSTOP:
|
||||
exitCode := 0
|
||||
if running {
|
||||
//go 1.8 support srv.Shutdown
|
||||
err := srv.Shutdown(nil)
|
||||
if err != nil {
|
||||
glog.Errorf("pprof stop httpserver error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := ngx.Stop(); err != nil {
|
||||
glog.Infof("Error during shutdown %v", err)
|
||||
exitCode = 1
|
||||
|
@ -56,4 +91,6 @@ func handleSigterm(ngx *controller.NGINXController) {
|
|||
|
||||
glog.Infof("Exiting with %v", exitCode)
|
||||
os.Exit(exitCode)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue