---
title: "Pyroscope query-frontend | Grafana Pyroscope documentation"
description: "The query-frontend accelerates queries."
---

# Pyroscope query-frontend

The query-frontend is a stateless component that provides the same API as the [querier](../querier/) and can be used to accelerate the read path and ensure fair scheduling between tenants using the [query-scheduler](../query-scheduler/).

In this situation, queriers act as workers that pull jobs from the queue, execute them, and return the results to the query-frontend for aggregation.

We recommend that you run at least two query-frontend replicas for high-availability reasons.

> Because the [query-scheduler](../query-scheduler/) is a mandatory component when using the query-frontend, you must run at least one query-scheduler replica.

The following steps describe how a query moves through the query-frontend.

1. A query-frontend receives a query.
2. The query-frontend places the query in a queue by communicating with the query-scheduler, where it waits to be picked up by a querier.
3. A querier picks up the query from the queue and executes it.
4. A querier or queriers return the result to query-frontend, which then aggregates and forwards the results to the client.
