KBM Nexus Flight Service
Operations analysis

System performance

How long the service took to prepare briefings, and where the time went. This is the service's own processing time. It leaves out the telephone connection, speech recognition and speech synthesis, so it is not how long a caller waited.

Time rangeWhole synthetic windowLast 24 hours of the windowLast 6 hours of the window

Showing 1,200 synthetic requests, Mon 05 Jan 00:01 UTC to Thu 08 Jan 04:25 UTC. Dates are synthetic. Trends, Predictions and the Improvement queue always use the whole window.

Preparation time

Synthetic
Typical (the middle one)
5.2 s
of 1,017 briefings and alternate checks with a recorded time
9 in 10 within
9.9 s
the slowest 1 in 10 took longer
99 in 100 within
14.7 s
nearest-rank, from the same set
Over 8 seconds
21.4%
218 of 1,017 with a recorded time
Finished near the limit
26
under 1.5 s of the 15-second limit left
Flight plans
8 ms
typical; no lookups are needed

How the times spread

Only requests with a recorded time are counted. A request with no timing record is not in any bar; see below.

Which lookups take the longest

Synthetic
Lookups, in the order a briefing makes them
LookupRanSkippedTypical timeSlowest 1 in 10Longest
Airport lookup1,017–405 ms603 ms754 ms
Current weather reports1,017–678 ms1.0 s1.3 s
Winds aloft table65–1.7 s2.7 s3.3 s
Hazards and pilot reports905–2.5 s4.6 s6.1 s
Weather reports along the route905–1.6 s2.7 s3.9 s
TFR list257–1.6 s2.4 s3.0 s
TFR details10213.9 s5.9 s7.4 s

Time is per lookup group, for the requests in this range that ran it. A lookup that could not start for lack of time is counted as skipped, not as a time.

How often a stored copy was found

Synthetic

Before fetching a feed the service looks for a stored copy still inside its keep-time. A found copy saves a lookup. It does not say how current the weather in it is, and nothing here is a statement about freshness.

Requests that left no timing record

Synthetic Known gap

54 synthetic requests in this range have no timing record. How long they took, and how they ended, is unknown. It is not zero, and they are in no time figure above.

Because this data is synthetic we can see what happened to them: {"missing_dropped":37,"missing_killed":17}. In the real service these would look the same as a request that never happened, and time figures built from records alone could lean towards the requests that finished. See Q-08.

What this page cannot tell you

Not measured

How long a caller waited Not measured

This is the service's processing time. The phone connection, speech recognition and speech synthesis are outside it.

What would measure it: Timing taken on the call itself, by the phone side.

Slow or failed outside sources Not measured

The synthetic data simulates only one cause of trouble: running short of time. It does not simulate a source going down or returning bad data.

What would measure it: Real request records that include failed lookups.

Load on the host Not measured

Nothing here measures processor, memory or concurrent requests.

What would measure it: Host monitoring, which this dashboard does not read.

Engineering details: how these times are taken

Preparation time is server.script_end_ms in each record: milliseconds on a monotonic clock from the moment the request's handler began to when its work finished. It excludes anything before the handler and anything after the response.

The service works to a 15,000 ms budget and stops starting new lookups when under 1,500 ms remain. "Finished near the limit" is the record's budget.out_of_time_at_end. A lookup skipped for that reason is a fetch group with skipped_for_budget set.

Percentiles are nearest-rank over briefings and alternate-airport checks with a recorded time, refused requests and flight plans left out. The histogram puts exactly 8,000 ms in the 4-to-8 second bar, so "over 8 seconds" is the bars from 8 s upward.