Veri tabanı bağlantısını her istekte çalıştırmalı ve algoritmik olarak her sorgu sonunda bağlantıyı kapatmalısınız. Çünkü siteye giren her bir tekil kullanıcı farklı isteklerde bulunacaktır, bu sebeple veri tabanına bağlanmalı. Veya kendinize ait cache sistemi yazmalısınız tabii bunu da kullanıcı girişlerinde vs. kullanamazsınız ve sitede dinamik içerikler varsa algoritma olarak baş etmeniz gereken tonlarca sorun çıkacaktır. Ayrıca düz mysqli yazmayı kimse için önermiyorum, çok daha iyi ve esnek orm modülleri varken, Doctrine/DBAL gibi.
Kısaca dediğiniz şey 3-4 satır kodla halledebilecek bir olay değil, olsaydı zaten max_connections hataları olmazdı büyük sitelerde. Bunu minimuma indirmek için dediğim mantıkları araştırmanız ve algoritma çalışması yapmanız şart.