Konfigürasyonlarına göre bazı mysql sunucuları anlık belli bir miktarda bağlantı karşılayabiliyorlar. Bu durumda bir bağlantı ile işiniz bittiğinde o bağlantıyı kapatmazsanız ve zaman aşımına da uğramazsa, yeni gelen ziyaretçi mysql bağlantısı için beklemek durumunda kalabilir ya da bağlantı hatası alabilir. Bu yüzden bir bağlantı ile işiniz bittiğinde kapatmalısınız.
Bu konuya özellikle dikkat çekmek lazım. @bayGaReZ anlatmış. Her sunucuda maksimum mysql bağlantı sayısı vardır. Php Mysql nedenini tam olarak anlamadığım bir sleep problemi var. Siz bir mysql bağlantısı açıp sorgunuzu gerçekleştirip bağlantıyı kapatmazsanız php sayfa sona erdiğinde sunucu mysql bağlantıyı kapatmayabiliyor. Sleep durumuna alıp başka bir sorgu da gelebilecekmiş gibi beklemeye alıyor. Bu bekleme süresi my.conf içinde belirlenmiş ve eğer yüksek bir değersen mesela 60 saniye gibi (connect_timeout=60 wait_timeout=60 interactive_timeout=60) 60 saniye boyunca gösterilen her sayfa için bir bağlantı açılır ve bağlantı kapatılmadan sleep durumuna geçer.
Sonuçta maksimum mysql bağlantı sayınız 400 ise sitenize giren 100 kişi bir dakikada 4 sayfa geziyorsa izin verilen bağlantı sayısı aşılır. Ayrıca kapanmayan her bağlantı mysql üzerinde bir load oluşturacağı için mysql işlemci kullanımınız hep aşırı yüksek olur.
mysql bağlantılarınızı işinizi görünce kapatın.
anlık ziyaretçilerin fazla olduğu sitelerde bellek problemi yaşamamak için de işiniz biten değişkenleri unset edin, mysql_free_results ile veritabanı verilerini boşlatın...
bu şekilde basit optimizasyonlar ile hostgator üzerinde büyük hitli site barındıranlar da var, bu basit uygulamaları yapmadığı için aynı hitle dedicated üzerinde başa çıkamayanlar da var.