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

Improve Synchronous Performance #59

Closed
caleblloyd opened this issue Sep 21, 2016 · 8 comments
Closed

Improve Synchronous Performance #59

caleblloyd opened this issue Sep 21, 2016 · 8 comments
Assignees
Milestone

Comments

@caleblloyd
Copy link
Contributor

With the merging of #58, Async Performance is solid. Threads are not held and Performance tests can run 500+ RPS while keeping response time under 1s.

There is problems with threads getting held during Synchronous performance tests, however. Synchronous tests have trouble achieving 100 RPS without lockups.

While it is best practice to use Async methods, we can't guarantee that everyone is doing that. Need to investigate synchronous performance issues and improve so that there are no lockups.

@caleblloyd caleblloyd added this to the 1.0.1 milestone Sep 21, 2016
@caleblloyd caleblloyd self-assigned this Sep 21, 2016
@caleblloyd
Copy link
Contributor Author

Fix will come once https://github.com/bgrainger/MySqlConnector/issues/62 is merged into MySqlConnector and released

@yukozh
Copy link
Member

yukozh commented Oct 3, 2016

Released 10012

@caleblloyd
Copy link
Contributor Author

Need to change our synchronous methods to call synchronous methods in MySqlConnector. I will work on this tonight.

@caleblloyd
Copy link
Contributor Author

Quick performance test:

1.0.0: Asynchronous: 30 RPS, Synchronous: 30 RPS
1.0.1: Asynchronous: 300 RPS, Synchronous: still needs fixes

1.0.1 should bring a 10x performance increase

@yukozh
Copy link
Member

yukozh commented Oct 4, 2016

What is the official perf test result?

@caleblloyd
Copy link
Contributor Author

What is the official perf test result?

Hardware Setup: Intel i5-6600K (4 cores), Ubuntu 16.04

Test Methodology: Run the performance test for 5s with varying RPS rates until 99th percentile request is within 10% of 100ms. Run at least 3 times.

Results:

Version   IO Type    Sustained RPS @100ms
1.0.0     Async      60
1.0.1     Async      480  => 8x Speedup for Async

1.0.0     Sync       50
1.0.1     Sync       90   => 1.8x Speedup for Sync

These test results also go to show how important it is for apps to implement Async all the way down.

Great job @bgrainger on the truly async MySqlConnector and @kagamine on the solid EF implementation. We've got the world's first truly async MySql driver for Entity Framework!

@yukozh
Copy link
Member

yukozh commented Oct 5, 2016

Could you compare our lib to the oracle one?

@caleblloyd
Copy link
Contributor Author

Could you compare our lib to the oracle one?

I've got an environemnt variable built into the performance test that will run it with Oracle: export EF_PROVIDER=oracle

The problem is that MySql.Data.EntityFrameworkCore/7.0.5-IR21 has too many bugs and throws exceptions for all of the methods in the performance test. I'll try to run it once they release an update.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants