apple / apple/foundationdb

Identify where traffic is coming from

Open
#2,163 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
16.7k
Forks
1.6k
Avg merge
1d 20h
Merged PRs (30d)
126

Description

When a cluster is near overloaded, operators want to understand where traffic is coming from in order to decide how to reduce the traffic.

Two questions to answer:
- [ ] 1) Is the traffic from internal or external workload? For example, are extra reads coming from data distribution's load balancing or clients? If traffic is from the internal workload, operators can temporarily disable some non-must component.
- [ ] 2) When some weird traffic pattern occurs, can FDB tell clients (e.g., RecLayer) which service is likely causing the new traffic pattern? This can help layers team (i.e., FDB clients) to identify the problem quickly.

To answer these questions, we may tag transactions **inexpensively** and aggregate metrics by tag. The number of tags should be small because the number of services on a cluster is limited.

Once FDB has the aggregated metrics, it also needs a better way to expose those aggregated metrics, which will be solved in Issue https://github.com/apple/foundationdb/issues/2156.

[This idea was proposed and discussed in FDB Offset 2019.]

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the proposed transaction-tagging and metric-aggregation approach in this issue, then read Issue 2156 for the planned metrics exposure. Clarify how internal versus external traffic and likely client services should be identified, and define completion around inexpensive tagging, bounded tag counts, aggregated metrics, and an agreed exposure path.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
distributed-systems, observability-sre
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.