All Projects → stackimpact → Stackimpact Python

stackimpact / Stackimpact Python

Licence: bsd-3-clause
DEPRECATED StackImpact Python Profiler - Production-Grade Performance Profiler: CPU, memory allocations, blocking calls, exceptions, metrics, and more

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Stackimpact Python

Stackimpact Go
DEPRECATED StackImpact Go Profiler - Production-Grade Performance Profiler: CPU, memory allocations, blocking calls, errors, metrics, and more
Stars: ✭ 276 (-58.87%)
Mutual labels:  monitoring, profiler, performance-metrics, performance-tuning
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+239.94%)
Mutual labels:  monitoring, profiler, performance-metrics, performance-tuning
Stackimpact Nodejs
DEPRECATED StackImpact Node.js Profiler - Production-Grade Performance Profiler: CPU, memory allocations, async calls, errors, metrics, and more
Stars: ✭ 46 (-93.14%)
Mutual labels:  monitoring, profiler, performance-metrics, performance-tuning
Goappmonitor
Golang application performance data monitoring.
Stars: ✭ 478 (-28.76%)
Mutual labels:  monitoring, profiler, performance-metrics, performance-tuning
Stackimpact Java
StackImpact Java Profiler - Production-Grade Performance Profiler: CPU, locks, runtime metrics, and more
Stars: ✭ 7 (-98.96%)
Mutual labels:  monitoring, profiler, performance-metrics, performance-tuning
Inspectit
inspectIT is the leading Open Source APM (Application Performance Management) tool for analyzing your Java (EE) applications.
Stars: ✭ 513 (-23.55%)
Mutual labels:  monitoring, performance-metrics, performance-tuning
Spm Agent Nodejs
NodeJS Monitoring Agent
Stars: ✭ 51 (-92.4%)
Mutual labels:  monitoring, performance-metrics
Pcm
Processor Counter Monitor
Stars: ✭ 1,240 (+84.8%)
Mutual labels:  monitoring, performance-metrics
Flask Profiler
a flask profiler which watches endpoint calls and tries to make some analysis.
Stars: ✭ 622 (-7.3%)
Mutual labels:  monitoring, profiler
jamonapi
Another repo for jamonapi.com which is primarily hosted on sourceforge
Stars: ✭ 57 (-91.51%)
Mutual labels:  performance-metrics, performance-tuning
awesome-performance
🚀 A curated list of awesome web performance stuff 🚀
Stars: ✭ 29 (-95.68%)
Mutual labels:  performance-metrics, performance-tuning
Netutils Linux
A suite of utilities simplilfying linux networking stack performance troubleshooting and tuning.
Stars: ✭ 664 (-1.04%)
Mutual labels:  monitoring, performance-tuning
Corefreq
CoreFreq is a CPU monitoring software designed for the 64-bits Processors.
Stars: ✭ 1,026 (+52.91%)
Mutual labels:  monitoring, performance-metrics
Scouter
Scouter is an open source APM (Application Performance Management) tool.
Stars: ✭ 1,792 (+167.06%)
Mutual labels:  monitoring, performance-metrics
Scout apm elixir
ScoutAPM Elixir Agent. Supports Phoenix and other frameworks.
Stars: ✭ 33 (-95.08%)
Mutual labels:  monitoring, profiler
Prometheus Net
.NET library to instrument your code with Prometheus metrics
Stars: ✭ 944 (+40.69%)
Mutual labels:  monitoring, performance-metrics
Sitespeed.io
Sitespeed.io is an open source tool that helps you monitor, analyze and optimize your website speed and performance, based on performance best practices advices from the coach and collecting browser metrics using the Navigation Timing API, User Timings and Visual Metrics (FirstVisualChange, SpeedIndex & LastVisualChange).
Stars: ✭ 4,255 (+534.13%)
Mutual labels:  monitoring, performance-metrics
Appmetrics
Node Application Metrics provides a foundational infrastructure for collecting resource and performance monitoring data for Node.js-based applications.
Stars: ✭ 864 (+28.76%)
Mutual labels:  monitoring, performance-metrics
Vsphere2metrics
VMware vSphere Performance Metrics Integration with Graphite & InfluxDB
Stars: ✭ 28 (-95.83%)
Mutual labels:  monitoring, performance-metrics
Sparklens
Qubole Sparklens tool for performance tuning Apache Spark
Stars: ✭ 345 (-48.58%)
Mutual labels:  performance-metrics, performance-tuning

StackImpact Python Profiler

Overview

StackImpact is a production-grade performance profiler built for both production and development environments. It gives developers continuous and historical code-level view of application performance that is essential for locating CPU, memory allocation and I/O hot spots as well as latency bottlenecks. Included runtime metrics and error monitoring complement profiles for extensive performance analysis. Learn more at stackimpact.com.

dashboard

Features

  • Continuous hot spot profiling of CPU usage, memory allocation and blocking calls.
  • Error and exception monitoring.
  • Health monitoring including CPU, memory, garbage collection and other runtime metrics.
  • Alerts on profile anomalies.
  • Team access.

Learn more on the features page (with screenshots).

How it works

The StackImpact profiler agent is imported into a program and used as a normal package. When the program runs, various sampling profilers are started and stopped automatically by the agent and/or programmatically using the agent methods. The agent periodically reports recorded profiles and metrics to the StackImpact Dashboard. The agent can also operate in manual mode, which should be used in development only.

Documentation

See full documentation for reference.

Supported environment

  • Linux, OS X or Windows. Python version 2.7, 3.4 or higher.
  • Memory allocation profiler and some GC metrics are only available for Python 3.
  • Profilers only support Linux and OS X.
  • Time (blocking call) profiler supports threads and gevent.
  • On unix systems the profilers use the following signals: SIGPROF, SIGALRM, SIGUSR2. Only SIGUSR2 is handled transparently, i.e. it should not conflict with previousely registered handlers.

Getting started

Create StackImpact account

Sign up for a free trial account at stackimpact.com (also with GitHub login).

Installing the agent

Install the Python agent by running

pip install stackimpact

And import the package in your application

import stackimpact

Configuring the agent

Start the agent in the main thread by specifying the agent key and application name. The agent key can be found in your account's Configuration section.

agent = stackimpact.start(
    agent_key = 'agent key here',
    app_name = 'MyPythonApp')

Add the agent initialization to the worker code, e.g. wsgi.py, if applicable.

All initialization options:

  • agent_key (Required) The access key for communication with the StackImpact servers.
  • app_name (Required) A name to identify and group application data. Typically, a single codebase, deployable unit or executable module corresponds to one application.
  • app_version (Optional) Sets application version, which can be used to associate profiling information with the source code release.
  • app_environment (Optional) Used to differentiate applications in different environments.
  • host_name (Optional) By default, host name will be the OS hostname.
  • auto_profiling (Optional) If set to False, disables automatic profiling and reporting. Focused or manual profiling should be used instead. Useful for environments without support for timers or background tasks.
  • debug (Optional) Enables debug logging.
  • cpu_profiler_disabled, allocation_profiler_disabled, block_profiler_disabled, error_profiler_disabled (Optional) Disables respective profiler when True.
  • include_agent_frames (Optional) Set to True to not exclude agent stack frames from profile call graphs.
  • auto_destroy (Optional) Set to False to disable agent's exit handlers. If necessary, call destroy() to gracefully shutdown the agent.

Focused profiling

Use agent.profile(name) to instruct the agent when to start and stop profiling. The agent decides if and which profiler is activated. Normally, this method should be used in repeating code, such as request or event handlers. In addition to more precise profiling, timing information will also be reported for the profiled spans. Usage example:

span = agent.profile('span1');

# your code here

span.stop();

Alternatively, a with statement can be used:

with agent.profile('span1'):
	# your code ehere

Manual profiling

Manual profiling should not be used in production!

By default, the agent starts and stops profiling automatically. Manual profiling allows to start and stop profilers directly. It is suitable for profiling short-lived programs and should not be used for long-running production applications. Automatic profiling should be disabled with auto_profiling: False.

# Start CPU profiler.
agent.start_cpu_profiler();
# Stop CPU profiler and report the recorded profile to the Dashboard.
agent.stop_cpu_profiler();
# Start blocking call profiler.
agent.start_block_profiler();
# Stop blocking call profiler and report the recorded profile to the Dashboard.
agent.stop_block_profiler();
# Start heap allocation profiler.
agent.start_allocation_profiler();
# Stop heap allocation profiler and report the recorded profile to the Dashboard.
agent.stop_allocation_profiler();

Analyzing performance data in the Dashboard

Once your application is restarted, you can start observing continuous CPU, memory, I/O, and other hot spot profiles, execution bottlenecks as well as process metrics in the Dashboard.

Troubleshooting

To enable debug logging, add debug = True to startup options. If the debug log doesn't give you any hints on how to fix a problem, please report it to our support team in your account's Support section.

Overhead

The agent overhead is measured to be less than 1% for applications under high load.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].