parca

parca-devApache-2.0活跃维护

基于 eBPF 的持续性能剖析平台,能按代码行号、跨时间维度分析 CPU 和内存占用,帮你在 Kubernetes 环境里定位性能瓶颈、降低基础设施成本。

Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.

v0.30.0发布于 2026-11-06 13:52 UTC5,010star +1 / 7 天273fork同步于 2026-11-10 05:36 UTC

怎么上手

从 README 代码块原样提取,可能是其中一种安装方式
git clone https://github.com/parca-dev/parca.git
硬件要求

README 没有说明硬件要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v0.30.0
  1. v0.30.0最新正式版2026-11-06 · 2026-11-06 13:52 UTC

    Changelog

    • 4d25ce9aa6c5f566adc395c74ba9925e0af2bc5b: build(deps): update grpc-gateway to v2.30.0 (#6391) (@renovate[bot])
    • a1fd9e0843679ef205d32c3f4cfd003fedf1a661: build(deps): update module github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus to v1.1.1 (#6471) (@renovate[bot])
    • 660d641e53921aba3b83931b3ba9806bcc4f067e: build(deps): update module go.opentelemetry.io/proto/otlp to v1.11.1 (#6474) (@renovate[bot])
    • 37ba6bbabfe4ada58604a7b606d0fabaee684e13: chore(deps): update dependency baseline-browser-mapping@>=2.0.0 <2.11.0 to v2.11.34 (#6476) (@renovate[bot])
    • 411c5da4f7c0eb4cc88d7463d7ebc85348bdd39c: chore(deps): update dependency protocolbuffers/protobuf-go to v1.36.12 (#6248) (@renovate[bot])
    • 0094f1d3481756cbeeba9c926b73f1833044c725: fix: ignore bytes sample labels in OTLP conversion (#6481) (@brancz)

    Docker images

    docker pull ghcr.io/parca-dev/parca:v0.30.0

    Thanks!

    Join our Discord server; Follow us on Twitter; Read the documentation.

  2. v0.29.12026-09-28 · 2026-09-28 13:53 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/parca-dev/parca/compare/v0.29.0...v0.29.1

  3. v0.29.02026-09-23 · 2026-09-23 17:30 UTC
    查看更新说明

    What's Changed

  4. v0.28.02026-05-07 · 2026-05-07 08:08 UTC
    查看更新说明

    What's Changed

    Features

    Enhancements

    Bug fixes

    Full Changelog: https://github.com/parca-dev/parca/compare/v0.27.0...v0.28.0

  5. v0.27.12026-03-20 · 2026-03-20 15:57 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/parca-dev/parca/compare/v0.27.0...v0.27.1

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Apache 2 License Build Container parca Discord contributors

    Features

    • eBPF Profiler: A single profiler, using eBPF, automatically discovering targets from Kubernetes or systemd across the entire infrastructure with very low overhead. Supports C, C++, Rust, Go, and more!

    • Open Standards: Both producing pprof formatted profiles with the eBPF based profiler, and ingesting any pprof formatted profiles allowing for wide language adoption and interoperability with existing tooling.

    • Optimized Storage & Querying: Efficiently storing profiling data while retaining raw data and allowing slicing and dicing of data through a label-based search. Aggregate profiling data infrastructure wide, view single profiles in time or compare on any dimension.

    Why?

    • Save Money: Many organizations have 20-30% of resources wasted with easily optimized code paths. The Parca Agent aims to lower the entry bar by requiring 0 instrumentation for the whole infrastructure. Deploy in your infrastructure and get started!
    • Improve Performance: Using profiling data collected over time, Parca can with confidence and statistical significance determine hot paths to optimize. Additionally, it can show differences between any label dimension, such as deploys, versions, and regions.
    • Understand Incidents: Profiling data provides unique insight and depth into what a process executed over time. Memory leaks, but also momentary spikes in CPU or I/O causing unexpected behavior, is traditionally difficult to troubleshoot are a breeze with continuous profiling.

    Feedback & Support

    If you have any feedback, please open a discussion in the GitHub Discussions of this project. We would love to learn what you think!

    Installation & Documentation

    Check Parca's website for updated and in-depth installation guides and documentation!

    parca.dev

    Development

    You need to have Go, Node and Pnpm installed.

    Clone the project

    git clone https://github.com/parca-dev/parca.git
    

    Go to the project directory

    cd parca
    

    Build the UI and compile the Go binaries

    make build
    

    Running the compiled Parca binary

    The binary was compiled to bin/parca .

    ./bin/parca
    

    Now Parca is running locally and its web UI is available on http://localhost:7070/.

    By default, Parca is scraping it's own pprof endpoints and you should see profiles show up over time. The scrape configuration can be changed in the parca.yaml in the root of the repository.

    Configuration

    Forwarding profiles with OTLP

    Use --mode=otlp-forwarder --store-address=<host:port> to scrape pprof endpoints, convert the profiles with OpenTelemetry's pprof translator, and export them to an upstream that supports OTLP profiles over gRPC. No local profile store is started. The existing --bearer-token, --bearer-token-file, --grpc-headers, and TLS flags apply to this connection. Use --insecure for a plaintext upstream.

    All target labels retained after relabeling and any --external-label values become OTLP resource attributes, without renaming. Labels inside the pprof data remain attributes on the OTLP samples. Relabeling changes only target metadata, not labels within profiles. As with other scraping modes, discovery's internal __meta_* labels must be copied by relabeling to retain them.

    Example configs map target metadata to OpenTelemetry semantic-convention names:

    • Static targets sets service.name, service.namespace, service.instance.id, and deployment.environment.name.
    • Kubernetes pods sets service attributes and k8s.* attributes from pod discovery metadata.

    Run either example with --config-path=deploy/otlp/<example>.yaml and the mode and store address above. Parca's job, instance, and __name__ labels are also forwarded as resource attributes for compatibility. The examples do not rename pprof sample types or units. The upstream must support the OTLP profiles v1development protocol used by this build. OTLP forwarding supports pprof WriteRaw requests and OTLP Export, but not Parca's Arrow or debuginfo APIs. The existing scraper-only and forwarder modes continue to use Parca's protocol.

    Flags:

    Usage: parca [flags]
    
    Flags:
      -h, --help                     Show context-sensitive help.
          --config-path="parca.yaml"
                                     Path to config file.
          --mode="all"               All runs all components. Scraper-only and
                                     forwarder send profiles to a remote Parca
                                     gRPC endpoint. OTLP-forwarder converts pprof
                                     profiles and sends them to an OTLP profiles
                                     gRPC endpoint.
          --http-address=":7070"     Address to bind HTTP server to.
          --http-read-timeout=5s     Timeout duration for HTTP server to read
                                     request body.
          --http-write-timeout=1m    Timeout duration for HTTP server to write
                                     response body.
          --port=""                  (DEPRECATED) Use http-address instead.
          --log-level="info"         Log level.
          --log-format="logfmt"      Configure if structured logging as JSON or as
                                     logfmt
          --otlp-address=STRING      The endpoint to send OTLP traces to.
          --otlp-exporter="grpc"     The OTLP exporter to use.
          --otlp-insecure            If true, disables TLS for OTLP exporters (both
                                     gRPC and HTTP).
          --cors-allowed-origins=CORS-ALLOWED-ORIGINS,...
                                     Allowed CORS origins.
          --version                  Show application version.
          --path-prefix=""           Path prefix for the UI
          --mutex-profile-fraction=0
                                     Fraction of mutex profile samples to collect.
          --block-profile-rate=0     Sample rate for block profile.
          --enable-persistence       Turn on persistent storage for the metastore
                                     and profile storage.
          --storage-active-memory=536870912
                                     Amount of memory to use for active storage.
                                     Defaults to 512MB.
          --storage-path="data"      Path to storage directory.
          --storage-enable-wal       Enables write ahead log for profile storage.
          --storage-snapshot-trigger-size=134217728
                                     Number of bytes to trigger a snapshot. Defaults
                                     to 1/4 of active memory. This is only used if
                                     enable-wal is set.
          --storage-row-group-size=8192
                                     Number of rows in each row group during
                                     compaction and persistence. Setting to <= 0
                                     results in a single row group per file.
          --storage-index-on-disk    Whether to store the index on disk instead
                                     of in memory. Useful to reduce the memory
                                     footprint of the store.
          --symbolizer-demangle-mode="simple"
                                     Mode to demangle C++ symbols. Default mode
                                     is simplified: no parameters, no templates,
                                     no return type
          --symbolizer-external-addr-2-line-path=""
                                     Path to addr2line utility, to be used for
                                     symbolization instead of native implementation
          --symbolizer-number-of-tries=3
                                     Number of tries to attempt to symbolize an
                                     unsybolized location
          --debuginfo-cache-dir="/tmp"
                                     Path to directory where debuginfo is cached.
          --debuginfo-upload-max-size=1000000000
                                     Maximum size of debuginfo upload in bytes.
          --debuginfo-upload-max-duration=15m
                                     Maximum duration of debuginfo upload.
          --debuginfo-uploads-signed-url
                                     Whether to use signed URLs for debuginfo
                                     uploads.
          --debuginfod-upstream-servers=debuginfod.elfutils.org,...
                                     Upstream debuginfod servers. Defaults to
                                     debuginfod.elfutils.org. It is an ordered
                                     list of servers to try. Learn more at
                                     https://sourceware.org/elfutils/Debuginfod.html
          --debuginfod-http-request-timeout=5m
                                     Timeout duration for HTTP request to upstream
                                     debuginfod server. Defaults to 5m
          --profile-share-server="api.pprof.me:443"
                                     gRPC address to send share profile requests to.
          --store-address=STRING     gRPC address to send profiles and symbols to.
          --bearer-token=STRING      Bearer token to authenticate with store
                                     ($PARCA_BEARER_TOKEN).
          --bearer-token-file=STRING
                                     File to read bearer token from to authenticate
                                     with store.
          --insecure                 Send gRPC requests via plaintext instead of
                                     TLS.
          --insecure-skip-verify     Skip TLS certificate verification.
          --external-label=KEY=VALUE;...
                                     Label(s) to attach to all scraped profiles in
                                     forwarding modes.
          --grpc-headers=KEY=VALUE;...
                                     Additional gRPC headers to send with each
                                     request to the remote store (key=value pairs).
    

    Credits

    Parca was originally developed by Polar Signals. Read the announcement blog post: https://www.polarsignals.com/blog/posts/2021/10/08/introducing-parca-we-got-funded/

    Contributing

    Check out our Contributing Guide to get started! It explains how compile Parca, run it with Tilt as container in Kubernetes and send a Pull Request.

    Contributors ✨

    Thanks goes to these wonderful people (emoji key):

    This project follows the all-contributors specification. Contributions of any kind welcome!

    Tested by Meticulous

    We use Meticulous to automatically test our UI for any unwanted changes.