VTTablet uses a variety of connection pools to connect to MySQLd.
Most of these can be controlled by vttablet options. Note that almost all of these pools are not fixed size connection pools, and will grow on demand to the maximum configured sizes. In older Vitess versions, v6.0 or before, some pools would eventually shrink again, but in recent Vitess versions a new pool connection is created when an old one reaches its idle timeout. As a result, pools will now effectively never shrink.
One thing to note is that each of these pools do not use unique MySQL usernames, so it can be hard from a MySQL process list to distinguish between different pool connections. Consult the _active pool metrics (e.g. vttablet_dba_conn_pool_active) as the authoritative resource on how many MySQL protocol connections are in use for each pool.
In a similar fashion the _exhausted pool metrics (e.g. vttablet_dba_conn_pool_exhausted) can be used to see if a given pool has run out of connections (and how many times), since VTTablet startup.
Note that a connection pool running out of connections is not necessarily a bad thing, since it limits the concurrency in the database.
As a result, connection pools should be sized mindful of the capacity of the underlying MySQL instance(s).
Max size (for each) controlled by: -queryserver-config-transaction-cap (default 20)
Used by transaction engine to manage transactions that require a dedicated connection.
The main pool for this use the transaction_pool.
The found_rows_pool is dedicated for connections where the client is using the CLIENT_FOUND_ROWS option.
For example, the affected_rows field return by the MySQL protocol becomes the number of rows matched by the WHERE clause instead.
This flag determines the fraction of connections in the transaction_pool and found_rows_pool that can be used by a single user.
The username is passed to vttablet from vtgate. If you are using a limited set of users, you may want to increase this limit. Or disable this limit feature by setting -transaction_limit_by_username to false as the default is true.
This option only comes into play if the TX limiter is enabled by -enable_transaction_limit, which it is not by default.