-
-
Notifications
You must be signed in to change notification settings - Fork 453
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
Added 3 different celery queues for analyzers. #274
Conversation
Is the performance improvement worth the 2 extra container/services and added complexity? We should really think about this because we have many services already; this change may result in existing users having to upgrade their instances/machines where they run IntelOwl. EDIT: Maybe we could just modify the default queue to use eventlet ? |
Eventlet was designed to work better with I/O bound threads. The vast majority of our analyzers is I/O bound, since we are using API in many cases. Unfortunely, it is not always the case. For example the docker analyzers or the static file analyzer. The number one cons of this implementation, is that yes, IntelOwl will require more resources to be run, since two more containers will be created. A solution for this problem can be to provide another I thought about putting eventlet as the default queue. Again, our vast majority of analyzers is I/O bound, so probably is a good idea. The only problem are the tests. The default queue has been tested till this day in a production environment, and it does it job quite well. We have no data if using eventlet will cause secondary effect that a short time testing is not able to detect (i.e. memory leaks and whatever). |
I will wait your thoughts on the matter before completing the PR for travis. |
I think that |
I'm fine with that. I Will add the |
4dfc394
to
d930412
Compare
Another thought: with this implementation, the user would have 2 options: Maybe we can totally remove the celery worker services from all base docker compose files (production, test, travis, traefik) and create 2 standalone files like |
Yes, at this point we should completely rework all the docker-compose files to leverage the override feature (https://docs.docker.com/compose/extends/). This would reduce also all the problems related to the duplication of code in those files |
The What I am suggesting is something similar to this comment which is also more or less similar to the current implementation. In any case, you are right. We do need to rework all compose files and also the directory structure. |
d930412
to
87b73f7
Compare
I also found this comment which says we can use |
Sorry maybe I was misunderstood with that link. I did not mean to refer to Example, we can avoid to set this in each compose file:
We can create a "base" docker-compose file that contains the basic configuration. |
Ah, I see. Yes, definitely what I meant as well. Issue #277: So, let's create a |
This pull request introduces 1 alert when merging 87b73f7 into c339a63 - view on LGTM.com new alerts:
|
Should we do this change in this PR only or another one ? @mlodic |
yep, I agree, one step at a time |
Do you prefer to split the configuration file before merge this PR? |
I think we can do it in a seperate PR after merging this one. I say this because this commit/PR is already very big as of now. You can fix the LGTM alert and mark the PR ready for review. |
It is possible to select the queue inside analyzer_config.json.
87b73f7
to
e75a0a0
Compare
It is possible to select the queue inside analyzer_config.json.
Added eventlet for the I/O queues.