Hey,
I'm not on the ProxySQL team, but I wanted to jump in and help you out.
I run a three-node ProxySQL cluster behind an AWS NLB, which handles upwards of 3000 parallel connections to an Aurora backend —we haven't noticed the kind of slowdown you are experiencing.
Have you tried making connections and running test queries directly to the DB from the ProxySQL host (not through ProxySQL), and then again using one of the application user credentials from the ProxySQL host to the DB via ProxySQL?
This would help to eliminate different parts of the communication pathways. I find it helpful to test for performance issues this way, starting as close to the DB as possible, then adding each additional hop as you step back through the network path to the application hosts.
This may help identify whether the issue is networking between ProxySQL and the DB, ProxySQL itself, or between the application and ProxySQL.
I've seen some strange routing paths where the comms path has gone halfway round the world before hitting the target, due to odd routing table configurations.
We intentionally introduced a slowdown when investigating an issue with a runaway application, but that involved adding entries to the 'mysql_query_rules' table for the particular user and setting the 'delay' field to delay query execution by a specified number of milliseconds.
On your ProxySQL nodes, use tools like 'htop' or just 'top' to watch the performance of the node from the operating system perspective, to make sure that the node itself isn't suffering performance issues - also, if you are saying the queries are taking a long time to complete - 263 seconds for instance - I presume that's not the actual query duration on the DB, but the complete start-to-finish time for the application to receive the requested data. You could try executing queries that do not return much data, perform the same operation as the slow queries - for example, wrap the slow query with an outer query that just counts the number of rows returned, meaning this entire operation is completed at the DB level, and just a single row is being returned - eg. "SELECT count(*) FROM ( your_query_here ) dd;"
Good luck with the investigations!
Regards,
Dave Rix
Senior Cloud Architect (AWS) / DevSecOps / MySQL DBA