fernandocoronatomf, How exactly are you implementing connection pooling? Are you simply setting
PDO::ATTR_PERSISTENT (https://www.php.net/manual/en/pdo.connections.php) on the
options array in the db connection config(https://github.com/laravel/framework/blob/8.x/src/Illuminate/Database/Connectors/Connector.php#L114), or are you using some other package to do so? Or is this purely a thought exercise at this point? If the latter, I'd have to assume that you don't actually have 100+k users/tenants, and that this would likely be premature optimization. If it is already implemented, it would help to know specifically what problems you're having.
As an alternate approach, you can split the difference and use connection pooling for ONLY the system connection. That should cut your connection requirement in half.
Having said that, I'm not entirely convinced it's really that big of a deal. Without persistent connections, laravel will create the connection when needed for each request, and close the connection after that request completes (though the TCP connection may continue to persist until a timeout is reached). With connection pooling implemented via PDO::ATTR_PERSISTENT, the connection will only be created after the first time it's requested (unique by host/username/password). In either case, the connection will only exist after the tenant has been accessed and, in the case of non-persistent connections, only if the connection has RECENTLY been accessed. So, if your 100+k number is correct, but you only have, say, 1000 active users at a time, then you'll only have 1000 active connections at a time.
Some additional caveats to using persistent connections: https://meta.wikimedia.org/wiki/Why_persistent_connections_are_bad
And for some final thoughts, if you truly have 100+k users, perhaps the user isn't the right object to consider a tenant. Typically, if you only need to separate users, you don't truly need a multi-tenant architecture, you just need user authorization controlling access to your various data objects.