Skip to content

Load test analysis

Toshiya Kobayashi edited this page Apr 30, 2026 · 6 revisions

once_within suppressed events

$ ./load_test_temporal_HA-PG.sh
...
File                               Events  Memory(bytes)  Time(ms)  Per-Event(KB)   MATCHING  BlobSize(B)
---------------------------------------------------------------------------------------------------------
Running once_within_100_events.json (HA-PG)...
once_within_100_events.json           100       11076896       854          108.2         10         1911
Running once_within_500_events.json (HA-PG)...
once_within_500_events.json           500       22225480      4033           43.4         10         1911
Running once_within_1k_events.json (HA-PG)...
once_within_1k_events.json           1000       35801992      7328           35.0         10         1911

Constant memory footprint increase is observed. Investigating heap dumps, confirmed that events suppressed by once_within are retained by ExpireJob. This is not a memory leak, but they will be eventually expired (= default 2h) and GC'ed.

So the case is similar to "unmatch" use case, where we immediately call eventHandle.unscheduleAllJobs so unmatched events are immediately GC'ed. It may be worth implementing the same for the once_within case, but it's very rare and less impacting.

(As of 2026/04/30)

match/unmatch test before/after externalize_event_record

Results of load_test_match_unmatch_noHA_HA-PG.sh

Before externalize_event_record

match/noHA:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events.json                           6,449,488             206
24kb_5k_events.json                           6,461,000             560
24kb_10k_events.json                          6,474,504             843

match/HA-PG:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events.json (HA-PG)                   7,956,584           8,005
24kb_5k_events.json (HA-PG)                   8,601,696          37,046
24kb_10k_events.json (HA-PG)                  9,277,488          73,397

unmatch/noHA:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events_unmatch.json                   6,413,096             125
24kb_5k_events_unmatch.json                   6,419,288             320
24kb_10k_events_unmatch.json                  6,435,376             440

unmatch/HA-PG:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events_unmatch.json (HA-PG)           7,966,392           7,208
24kb_5k_events_unmatch.json (HA-PG)           8,543,304          33,522
24kb_10k_events_unmatch.json (HA-PG)          9,288,456          66,566

After externalize_event_record

match/noHA:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events.json                           6,449,440             211
24kb_5k_events.json                           6,457,592             593
24kb_10k_events.json                          6,477,472             886

match/HA-PG:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events.json (HA-PG)                   7,919,504           8,752
24kb_5k_events.json (HA-PG)                   7,976,000          40,765
24kb_10k_events.json (HA-PG)                  8,048,768          81,181

unmatch/noHA:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events_unmatch.json                   6,413,304             123
24kb_5k_events_unmatch.json                   6,422,512             333
24kb_10k_events_unmatch.json                  6,435,480             491

unmatch/HA-PG:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events_unmatch.json (HA-PG)           7,953,256           7,362
24kb_5k_events_unmatch.json (HA-PG)           7,963,920          34,440
24kb_10k_events_unmatch.json (HA-PG)          7,923,408          67,595

Latency issue especially in "match" case.

After UPSERT+DELETE collapse fix -> No degration

match/HA-PG:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events.json (HA-PG)                   7,930,544           7,943
24kb_5k_events.json (HA-PG)                   8,015,232          37,920
24kb_10k_events.json (HA-PG)                  7,979,288          74,324


unmatch/HA-PG:
Test Name                                 Memory (bytes)    Duration (ms)
------------------------------------------------------------------------
24kb_1k_events_unmatch.json (HA-PG)           7,864,872           7,447
24kb_5k_events_unmatch.json (HA-PG)           7,931,824          34,178
24kb_10k_events_unmatch.json (HA-PG)          7,935,280          66,154

Clone this wiki locally