-
Notifications
You must be signed in to change notification settings - Fork 181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Datastore/cache reduces performance. #98
Comments
Lets work on a PR to address this issue. Options as I see it 1) use HTTP caching 2) Use an async notification based caching approach, whereby µGW will only contact the datastore when needed 3) Move the datastore in-process (need to consider any clustering implications). @yrsh thoughts? |
Hi, Tony. |
I think your questioning the validity of the datastore approach assuming immutable containers (--read-only)? One option is to update the datastore to be an in memory cache and remove the dependency on the filesystem. Lets work on delivering option one as a quick win and then pivot the conversation to whats optimal for immutable containers. |
Sorry for the delay, we'll upload code tomorrow morning. |
Hi! mgw: datastore: Left - without cache, right - with cache. Load generator - artillery.io. We used simple definition with javascript policy, which writes simple response text. |
@yrsh pls create a PR (https://help.github.com/articles/creating-a-pull-request-from-a-fork/) for each repo and I'll review the code and merge. |
@tonyffrench I've created several pull requests, but you are using very old node versions. Could you please comment why do you need this? |
We have customers using older LTS versions like v4 that are still active. |
@tonyffrench can we somehow go with ES6 or we need to remake our PRs to ES5? |
I've merged and published |
@tonyffrench I've created a new PR, with ES5: |
We have already made performance improvements in flow-engine and now going to rewrite the datastore and then make PR with global changes. We need to know for which purpose is datastore used? As I see the key features are the synchronization of definitions and TLS profiles, but does store have any another important functionality? |
Are there plans to have a fix for this. Currently we are faced with an issue where if we have more then 3 to 4 spec files that need to be loaded into microgateway it hangs or runs out of memory when starting up. The out of memory looks to be coming from datastore. Following is the error stack:
|
I have raised this issue within our Engineering team. We should have a response shortly. |
When we load more than 500 rps, the performance falls heavily. Because the datastore-logic (apiloader middleware) starts sending over the network snapshots data between microgateway, datastore and cache. What to do with it, can it be somehow optimized or disabled? Why it sends every time http-request (in getCurrentSnapshot) on every request to the api?
The text was updated successfully, but these errors were encountered: