-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
OutOfMemory on API call to get Access Token. #4362
Comments
Could you see open that crash log in editor and look for line with 'Stack+heap: 850246556' and then copy here lines starting from '=proc:' before that line, to next '=proc'? |
Here is the requested info:
|
Could you also please copy paste section for =proc:<0.1002.0> |
For sure:
|
Hm, so it looks like you process that overflows memory is, one spawned to handle http api call. and it possibly did that when trying to see if you have permission to call that command? Quite frankly i never seen anything like that. It could be something causing stack overflow maybe, could you see if you have '=proc_stack:<0.1175.0>' section in crash file, and copy paste it here if it's here (if it's not super long, if it's long please copy just some initial parts). Would you be able to share you ejabberd.yml config? Or at least acl:, access_rules: and api_permissions: parts from it? |
The section for proc_stack<0.1175.0> is (removing the heap part):
I
|
Only thing from that possibly could have that impact, could possibly be using shared_group in acl rule, depending how that group is defined, getting data about that group could somehow trigger allocation of big amount of data? I would try to switch that to explicit list of users, and see if this helps. The other alternative for excess allocations would be just api call having lot of data sent in request, but i think this will cause memory problems earlier in that process life time. |
We have the same configuration on a Staging server and we don't get that error, thats why i think that it can be a capacity problem, we just have the problem in production, same config on staging works fine. What is the dimension aprox for a server with average 750 users connected? Is ok the resources that we configured |
As i said i never seen anything like that before, and i think in general your current setup should be ok. But shared rosters can have impacts on bigger installations, it has rules that can use "all users registered on server", or "all currently online users" and as you can guess, with larger user base, this can be a issue. That's why i mentioned shared_roster. The fact that it works on staging server, where i guess is less users, it may not be directly comparable. |
Hello,
We have an ejabberd instance with 1590 potential users but the average of connected users is 750 aprox.
We want to implement automatized tasks that sends messages through API to MUC groups. When we try to make a call to the API to request the access token the request freezes and the server gets an OutOfMemory error from erlang:
I used https://github.com/ferd/recon/blob/master/script/erl_crashdump_analyzer.sh script for analyzing the dump and i get this:
We have an scheduled task every saturday that extracts through API some information and it works fine, so we think is a capacity problem. But, we increased memory from 24GB to 32 GB and same problem, we tried also to increase to 48 and same issue.
At this moment our configuration is:
Is our instance undersized or is there any bug with this ejabberd version? We didn't find any info about it.
The text was updated successfully, but these errors were encountered: