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

performance drastically deteriorates as task quantity increases #3822

Closed
1 task done
ChangePlaces opened this issue Apr 18, 2018 · 14 comments
Closed
1 task done

performance drastically deteriorates as task quantity increases #3822

ChangePlaces opened this issue Apr 18, 2018 · 14 comments

Comments

@ChangePlaces
Copy link

ChangePlaces commented Apr 18, 2018

This issue is:

Actual behaviour

As the number of tasks in a project grows, releasing after dragging a task around causes the board to become unusable with the spinner showing in the bottom right corner as well as the task being greyed out. As more tasks are present, the delay increases. In one project I have over 500 open tasks, and I'm up to around 3-4 seconds delay just after dragging a task.

This is with SQLite database, with approx 2000 tasks across all projects (mostly all closed).

Expected behaviour

No noticeable delay after dragging and releasing a task.

Steps to reproduce

  • add approximately 500 tasks to a project

  • drag a task from one col to another

  • could this be from something as simple as a missing index on the db? I suspect this is the case due to the performance decreasing as row count increases.

Configuration

  • Kanboard version: 1.2.2
  • Database type and version: Sqlite 3.11.0
  • PHP version: 7.1
  • Browser: browser independent
@ghost
Copy link

ghost commented Apr 18, 2018 via email

@ChangePlaces
Copy link
Author

ChangePlaces commented Apr 18, 2018

Interesting, I wonder if, when a swimlane / col is hidden, if the tasks can not be loaded into, or removed from the DOM.

i've just monitored the network requests in the browser after dragging (f12 in browser to view network) and after dragging just saw a POST request, the response was the ENTIRE page HTML (for all 500 tasks) for redrawing the complete page. That's a little... wrong as each task drag is literally a full page load!

@fguillot
Copy link
Member

This issue has been discussed here in the past: #3297 (comment)

There are a lot of room for improvements:

  • Rethink how the board is rendered
  • Rethink how the task position are updated in the database
  • All operations that generate long I/O are executed synchronously: sending an email, a notifications (there is an optional background worker but it's a hackish solution because PHP...)

All these things are inefficient and slow. In addition to that, technologies used are almost considered legacy nowadays (PHP/jQuery).

@ChangePlaces
Copy link
Author

well. some interesting points in the comments. i'd be for just returning a basic ajax response, including success. column task counts can be implemented client side, and would only need to be wrapped in some spans which jquery could target each of on a task drop event. the task count could be stored in a js var, or just counted dynamically. even the least efficient last option there is going to be heaps faster than returning the whole page.

as for automatic actions, isn't the page updated every x seconds anyway? as user defined.

@Abraka
Copy link

Abraka commented May 8, 2018

technologies used are almost considered legacy nowadays (PHP/jQuery) ...fguillot what do you mean by that? Do you plan to rewrite kanboard with ruby or python or something else?

@amff1704
Copy link

amff1704 commented Jun 26, 2018

I had the same problem coming with the increasing number of users/tasks/projects. Now, after I’ve migrated to Mysql, no problem at all. All goes as smoothly as it can be. I have around 30+ projects with more than 300 tasks each and all with couverimages and files associated.

Cheers

@ChangePlaces
Copy link
Author

@amff1704 Interesting - was this from a sqlite database as well?

@lastlink
Copy link
Contributor

Would it not be possible to make changes to the ui w/out rerendering the page?

@amff1704
Copy link

@ChangePlaces Yes, I was comming from a sqlite db.

@jack1729
Copy link

amff1704: did you tweak MySQL at all?
I just moved from SQLite to MySQL (actually MariaDB if it matters) and the expected performance increase was missing. I have about 6000 row in my product_activities table but select * from it is subsecond, but when I switch to the project with the bulk of the entries - it takes 7-8 seconds to load. I am using that project as an archive for my sprints.

@amff1704
Copy link

@jack1729 I'm on a recent machine, with SSD, xeon (etc) with Linux server 16.04, I did a clean regular MySQL, from the linux repository, install. I had no problems so far, over 60 projects, 20 to 300 tasks each by now...

@lastlink
Copy link
Contributor

Probably b/c you have way more hardware and resources dedicated for it that most of us running on shared web hosts.

@lastlink
Copy link
Contributor

Is this still an issue? Seems that there were recent improvements to this with the compact view vs expanded. I noticed that you can drag individual tasks and it will attempt to change each one w/out doing a page refresh. The popup task edit modal is still slow though.

@ghost ghost removed improvement labels Jan 19, 2019
@fguillot
Copy link
Member

Please continue the discussions on the forum as there are so many ways to improve the performances of the application.

@kanboard kanboard locked and limited conversation to collaborators Mar 27, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

6 participants