Go Language Runtime Statistics and Profiling
Note: The information in this section is applicable for an app executable only.
Flogo allows you to gather runtime system statistics for a Flogo app that is running.
Warning: Your management port must be set for the Flogo app, to call the API to gather Go language runtime statistics. To set a different management port for your
Flogo app, run
FLOGO_HTTP_SERVICE_PORT=<port>./<app-name>/You can use curl to call this API.
To obtain the system statistics on your running app:
- Procedure
- From the folder in which your app binary resides, enable the HTTP service using the following command:
FLOGO_HTTP_SERVICE_PORT=<port> ./<app_name>
- Run the following command:
curl http://localhost:<port>/debug/vars
The command returns the following statistics:
| System Metric Name | Description |
|---|---|
| cmdline | Command-line arguments passed to the app binary |
| cpus | Number of logical CPUs usable by the current process |
| goroutines | The number of Go routines that currently exist |
| memstats | Memory statistics for the current process. See the Golang documentation for details. |
| processid | System process ID |
| version | Go language version used to build the app |
Profiling your app runtime
You can collect and visualize runtime profiling data for
Flogo apps using the
pprof tool in Golang.
| Endpoint | Description |
|---|---|
| /debug/pprof | List all profiles |
| /debug/pprof/profile | Profile current CPU usage. By default, it is profiled for every 30 seconds. To change the profiling interval, set the
seconds query parameter to a desired value. For example,
go tool pprof http://localhost:<port>/debug/pprof/profile?seconds=15 |
| /debug/pprof/heap | A sampling of memory allocations of live objects. For example,
go tool pprof http://localhost:<port>/debug/pprof/heap |
| /debug/pprof/goroutine | Stack traces of all current Go routines. For example,
go tool pprof http://localhost:<port>/debug/pprof/goroutine |
| /debug/pprof/trace | A trace of execution of the current program. For example,
go tool pprof http://localhost:<port>/debug/pprof/trace |