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 419 synthetic requests, Wed 07 Jan 04:29 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)
4.9 s
of 360 briefings and alternate checks with a recorded time
9 in 10 within
9.1 s
the slowest 1 in 10 took longer
99 in 100 within
14.5 s
nearest-rank, from the same set
Over 8 seconds
19.2%
69 of 360 with a recorded time
Finished near the limit
6
under 1.5 s of the 15-second limit left
Flight plans
9 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 lookup360–416 ms606 ms709 ms
Current weather reports360–685 ms1.0 s1.3 s
Winds aloft table22–1.9 s2.7 s2.8 s
Hazards and pilot reports309–2.4 s4.6 s6.0 s
Weather reports along the route309–1.6 s2.7 s3.9 s
TFR list82–1.6 s2.3 s3.0 s
TFR details32–3.5 s5.7 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

16 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":11,"missing_killed":5}. 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.