You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@tomerweller was running into performance issues when submitting thousands of transactions to a standalone network. It looks like the problem is related to this code:
With many pending transactions getting its' results, even when separate queries are fast, can cumulate to a very long updates time (few seconds time). The chart below shows the time distribution of tx status updates after an example ledger ingestion:
What did you expect to see?
When checking the status of pending transaction we should send a single batch query instead of thousands queries asking for a single tx result. This should make this magnitudes faster.
When working on this please remember about two things:
Postgres param limit of around 65k. If a batch query needs to send more params it should be called multiple times.
The query used right now is searching for both normal txs and fee bump txs. The batch query should do the same thing.
The text was updated successfully, but these errors were encountered:
How do we decide when we've accumulated enough status checks to send a single batch query? There's a tradeoff here between not waiting and batching for performance.
…ctions in txsub (#3563)
This commit modifies `txsub.Tick` to check the status of transactions in the
queue by sending a batch query instead of sending separate queries to get status
of each transaction in the queue.
This was done due performance reasons. If the number of transactions in the
queue is large this slows down entire `Tick` function. Data in #3552 suggest
that previous method can take even 4s per `Tick` execution for around 1000
transactions in the queue.
What version are you using?
2.1.0
What did you do?
@tomerweller was running into performance issues when submitting thousands of transactions to a standalone network. It looks like the problem is related to this code:
go/services/horizon/internal/txsub/system.go
Lines 307 to 325 in 56d94a2
With many pending transactions getting its' results, even when separate queries are fast, can cumulate to a very long updates time (few seconds time). The chart below shows the time distribution of tx status updates after an example ledger ingestion:
What did you expect to see?
When checking the status of pending transaction we should send a single batch query instead of thousands queries asking for a single tx result. This should make this magnitudes faster.
When working on this please remember about two things:
The text was updated successfully, but these errors were encountered: