Skip to content
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

Downgrade python #288

Merged
merged 9 commits into from
Jul 4, 2018
Merged

Downgrade python #288

merged 9 commits into from
Jul 4, 2018

Conversation

waghanza
Copy link
Collaborator

@waghanza waghanza commented Jul 4, 2018

Hi,

This PR downgrade python, 3.6 instead of 3.7, as uvloop is not compatible with 3.7 (yet ?)
MagicStack/uvloop#178

@frnkvieira As far a I understand workers (at least for app I design) SHOULD be 1 per core. Why vibora spread on cpu_count() + 2 by default

@see https://github.com/vibora-io/vibora/blob/master/vibora/server.py#L282

@greed2411 I can see that on the implementation, you specified headers.
Is there any idea behind that ? (there is no header in doc examples).

Regards,

greed2411 and others added 5 commits July 3, 2018 19:03
* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
@frnkvieira
Copy link

@waghanza From my tests, this is the best setup for Vibora if you take the average of different benchmarks. There is no science on this and never will, the optimal number of workers is always dependent on the application workload. In my own benchmarks I setup 1 worker per core for each framework to make it fair as you should keep doing. Hope it makes sense :)

@waghanza
Copy link
Collaborator Author

waghanza commented Jul 4, 2018

@frnkvieira I understand you use 1 worker per core on you're benchmarks, but should not it be the default ? I mean, at least having a huge workload it is enough no ?

@frnkvieira
Copy link

frnkvieira commented Jul 4, 2018

@waghanza there is a difference between "enough" and "optimal", as I said, this is a personal choice based on my experience but usually throwing a little more workers than CPU cores leads to better results (in average between different kinds of benchmarks, not on hello-world ones). If you look at Gunicorn they also seems to throw one "extra" worker on their formula. (http://docs.gunicorn.org/en/stable/design.html#how-many-workers).

@waghanza
Copy link
Collaborator Author

waghanza commented Jul 4, 2018

@frnkvieira sure default behaviour is the core team choice 😜

moreover, vibora seems to be more performing with the default (for this project use case)

Workers Requests per s
Default 142554.00
1 per CPU 134763.00

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
greed2411 and others added 2 commits July 4, 2018 21:12
* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
@waghanza waghanza merged commit 26336b8 into the-benchmarker:master Jul 4, 2018
@waghanza waghanza deleted the downgrade_python branch July 4, 2018 19:22
waghanza added a commit that referenced this pull request Jul 4, 2018
* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* use python36 to test uvloop base frameworks

* do not declare extra dependencies

* spread vibora on all cores

* remove headers specifications on vibora implementations

* use default worker numbers on vibora (more performing)

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
waghanza added a commit that referenced this pull request Jul 5, 2018
* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* use python36 to test uvloop base frameworks

* do not declare extra dependencies

* spread vibora on all cores

* remove headers specifications on vibora implementations

* use default worker numbers on vibora (more performing)

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
waghanza added a commit that referenced this pull request Jul 5, 2018
* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* use python36 to test uvloop base frameworks

* do not declare extra dependencies

* spread vibora on all cores

* remove headers specifications on vibora implementations

* use default worker numbers on vibora (more performing)

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
waghanza added a commit that referenced this pull request Jul 6, 2018
* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* use python36 to test uvloop base frameworks

* do not declare extra dependencies

* spread vibora on all cores

* remove headers specifications on vibora implementations

* use default worker numbers on vibora (more performing)

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
waghanza added a commit that referenced this pull request Jul 6, 2018
* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* use python36 to test uvloop base frameworks

* do not declare extra dependencies

* spread vibora on all cores

* remove headers specifications on vibora implementations

* use default worker numbers on vibora (more performing)

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask

* Introducing Vibora (#285)

* add vibora

this code has been tested and it requires `SO_REUSEPORT` on Ubuntu 16.04, therefore can't guarantee anything about the code. Use it at your own risk.

* Update benchmarker.cr

* update for vibora

* fix routing -> type not required

* add vibora

* use gunicorn for sanic

* use http://meinheld.org/ to enable async networking with django

* reuse port on tornado

* use meinheld / SO_REUSEPORT on django

* use meinheld / SO_REUSEPORT on flask
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants