Jupyterlab scale numbers from no. of concurrent running notebooks

AFAIK, jupyterlab launches a kernel per notebook. Is there a limit on how many concurrently running notebooks can be supported, other than fd limit??
I did look into enterprise gateway project to offload the kernel management, but want to evaluate the pros/cons of the 2 solutions.