Add more advanced profiling support
This commit is contained in:
		
							parent
							
								
									536f00a5e5
								
							
						
					
					
						commit
						1683675807
					
				
							
								
								
									
										33
									
								
								cmd/root.go
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								cmd/root.go
									
									
									
									
									
								
							|  | @ -31,10 +31,9 @@ import ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
|  | 	profiler        = "" | ||||||
| 	configPath      = config.DefaultLocation | 	configPath      = config.DefaultLocation | ||||||
| 	debug           = false | 	debug           = false | ||||||
| 	runCPUProfile   = false |  | ||||||
| 	runMemProfile   = false |  | ||||||
| 	useAutomaticTls = false | 	useAutomaticTls = false | ||||||
| 	tlsHostname     = "" | 	tlsHostname     = "" | ||||||
| 	showVersion     = false | 	showVersion     = false | ||||||
|  | @ -57,8 +56,7 @@ func init() { | ||||||
| 	root.PersistentFlags().BoolVar(&showVersion, "version", false, "show the version and exit") | 	root.PersistentFlags().BoolVar(&showVersion, "version", false, "show the version and exit") | ||||||
| 	root.PersistentFlags().StringVar(&configPath, "config", config.DefaultLocation, "set the location for the configuration file") | 	root.PersistentFlags().StringVar(&configPath, "config", config.DefaultLocation, "set the location for the configuration file") | ||||||
| 	root.PersistentFlags().BoolVar(&debug, "debug", false, "pass in order to run wings in debug mode") | 	root.PersistentFlags().BoolVar(&debug, "debug", false, "pass in order to run wings in debug mode") | ||||||
| 	root.PersistentFlags().BoolVar(&runCPUProfile, "profile-cpu", false, "pass in order to profile wings CPU usage") | 	root.PersistentFlags().StringVar(&profiler, "profiler", "", "the profiler to run for this instance") | ||||||
| 	root.PersistentFlags().BoolVar(&runMemProfile, "profile-mem", false, "pass in order to profile wings memory usage") |  | ||||||
| 	root.PersistentFlags().BoolVar(&useAutomaticTls, "auto-tls", false, "pass in order to have wings generate and manage it's own SSL certificates using Let's Encrypt") | 	root.PersistentFlags().BoolVar(&useAutomaticTls, "auto-tls", false, "pass in order to have wings generate and manage it's own SSL certificates using Let's Encrypt") | ||||||
| 	root.PersistentFlags().StringVar(&tlsHostname, "tls-hostname", "", "required with --auto-tls, the FQDN for the generated SSL certificate") | 	root.PersistentFlags().StringVar(&tlsHostname, "tls-hostname", "", "required with --auto-tls, the FQDN for the generated SSL certificate") | ||||||
| 
 | 
 | ||||||
|  | @ -93,16 +91,23 @@ func rootCmdRun(*cobra.Command, []string) { | ||||||
| 		os.Exit(0) | 		os.Exit(0) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if runCPUProfile { | 	switch profiler { | ||||||
| 		defer profile.Start(func(p *profile.Profile) { | 	case "cpu": | ||||||
| 			profile.CPUProfile(p) | 		profile.Start(profile.CPUProfile) | ||||||
| 		}).Stop() | 	case "mem": | ||||||
| 	} | 		profile.Start(profile.MemProfile) | ||||||
| 
 | 	case "alloc": | ||||||
| 	if runMemProfile { | 		profile.Start(profile.MemProfileAllocs()) | ||||||
| 		defer profile.Start(func(p *profile.Profile) { | 	case "heap": | ||||||
| 			profile.MemProfile(p) | 		profile.Start(profile.MemProfileHeap()) | ||||||
| 		}).Stop() | 	case "routines": | ||||||
|  | 		profile.Start(profile.GoroutineProfile) | ||||||
|  | 	case "mutex": | ||||||
|  | 		profile.Start(profile.MutexProfile) | ||||||
|  | 	case "threads": | ||||||
|  | 		profile.Start(profile.ThreadcreationProfile) | ||||||
|  | 	case "block": | ||||||
|  | 		profile.Start(profile.BlockProfile) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Only attempt configuration file relocation if a custom location has not
 | 	// Only attempt configuration file relocation if a custom location has not
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user