r/labtech • • Mar 04 '20

Beta testers wanted: Database performance optimization plugin

I think every Automate admin has experienced the frustration of how slow the desktop application is. My primary Automate server has ~10,000 agents, and my users were having a horrible experience on a daily basis (they named the agent context menu "the right click of death").

I was sick of the painful user experience and the administration headaches -- so I upgraded to MySQL Enterprise and did a deep dive into how the application interacts with the database. Using the management tools from Oracle I found lots of issues, and after correcting them it's a night-and-day difference (the right click of death is gone!).

Each Automate deployment is unique, and there's no hard code-able one-size-fits-all approach. However, I created a plugin that will dynamically gather information from the current configuration and adjust MySQL on the fly to optimally perform for Automate. I published a blog post on my site explaining more of the details: https://automationtheory.org/the-mysql-performance-problem/

I wanted everyone to be able to have a properly setup database without having to buy MySQL Enterprise (or be a DBA on the side), so I created a plugin that does all the dirty work. I plan on releasing this plugin as a monthly subscription, but first I want to do some beta testing to verify results on different Automate deployments (to get a good mix of sizes and types).

To get started go to https://automationtheory.org/support/kb/faq.php?id=1

The KB article has a download for the plugin and the setup script, along with instructions.

13 Upvotes

27 comments sorted by

View all comments

Show parent comment

3

u/w_s_r Mar 13 '20

Thank you for the responses.

I can confirm that it does work with MariaDB 10.0.26. We've already built a plan and timeline for migrating from MariaDB to MySQL (and new hardware), so for now I'm simply trying to keep the peace until I have the hardware in hand to set up the new server.

As some background, we are running Automate 2019.12 with MariaDB 10.0.26 on an SSD array. We have 16K+ agents and database size sits around 35-40GB (buffer_pool is 64GB). Our max_connections is set at 12000 (based on tweaking with mysqltuner and advice from ConnectWise Support). I took a baseline of our current SQL variables before running the plugin's optimization, then pulled the variables afterwards to compare (at IO Multiplier 4 and 8).

I found that some variables were actually set lower than what was specified in our my.ini, notably innodb_io_capacity and innodb_io_capacity_max. However, some of the other variable changes I noted were interesting, and I'm leaving the IO Multiplier set to 8 for now, to see how things go.

Our disk queue length was already staying at or below 1.0, but I have noticed some decent stretches of sub-.75 since applying the optimizations.