mongodb / laravel-mongodb

A MongoDB based Eloquent model and Query builder for Laravel (Moloquent)
https://www.mongodb.com/compatibility/mongodb-laravel-integration
MIT License
7k stars 1.43k forks source link

Performance Regression 5.x #3166

Closed jensk closed 1 week ago

jensk commented 1 week ago

Description:

Hello,

We are experiencing a significant performance regression after upgrading to the latest version 5.0.2.

Our test suite, comprising approximately 400 tests, 2,000 assertions, and 15,000 queries, used to complete in about 15 seconds with version 4.8.0. After the upgrade, it now takes around 50 seconds to complete. (on my local dev box)

Individual HTTP requests or single tests do not exhibit any issues. In fact, performance for our average web request has slightly improved.

The issue only shows up in long-running processes, such as a test suite.

I have created a demo Laravel application that demonstrates the problem in a simple, isolated manner: Demp-App We were able to reproduce the issue in 3 different environments:

Steps to reproduce

  1. git clone https://github.com/jensk/lara-mongo-debug
  2. composer install
  3. vendor/bin/phpunit

Expected behaviour

Execution time of the tests should remain stable. (Example results with 4.8)

Actual behaviour

Execution time increases slightly and linearly with each call to the various methods of laravel-mongodb. (e.g. truncate, delete, create ...) (Example results with 5.0.2)

GromNaN commented 1 week ago

Thank you for the report and the demo app; that will definitely help us investigate. This issue is tracked in our Jira for investigation PHPORM-248.

I'll check the CommandSubscriber.

jensk commented 1 week ago

Thanks for the quick response! <3 If I can help any further to track this down, please let me know.

GromNaN commented 1 week ago

As I suspected, it's the command subscriber that's at fault. I've open a PR to register it only when logs are enabled. https://github.com/mongodb/laravel-mongodb/pull/3167

jensk commented 1 week ago

Thank you very much. 5.x works like a charm now.

Btw, v5 is an awesome release! We appreciate the great work you put into this package.