Php MySQL çok bağlantı hatası alıyorum

2 Cevap php

I am using MySQL and PHP with 2 application servers and 1 database server. With the increase of the number of users (around 1000 by now), I'm getting the following error :

SQLSTATE[08004] [1040] Too many connections

Parametre max_connections 1000 my.cnf ve mysql.max_persistent {[(5 in -1 ayarlanır ayarlanır )]}.

Orada MaxClients apache parametre 750 eşit olduğu bir anda çalıştıran çoğu 1500 apache süreçleri vardır ve biz 2 uygulama sunucuları var.

  • Belirtildiği gibi 1500 max_connections yükseltmek gerekir here?
  • Yoksa (veritabanı sunucusu uygulama sunucuları gibi aynı değildir çünkü biz performans nedenleriyle kalıcı bağlantıları ile PDO kullanabilirsiniz) mysql.max_persistent 750 ayarlamanız gerekir?
  • Yoksa başka bir şey denemeliyim?

Şimdiden teşekkürler!

2 Cevap

Ben senin bağlantıları yeterince hızlı kapanış değil düşünüyorum ve varsayılan zaman ulaşana kadar onlar yığını. Ben aynı sorunu vardı ve WAIT_TIMEOUT ile ben şeyler çözüldü.

Siz my.cnf kurulum için deneyebilirsiniz

set-variable = max_connections=1000 // max connection
set-variable = max_user_connections=100 // max user connection per hour
wait_timeout = 60 // wait timeout for connection in seconds

60 saniye geçtikten sonra varolan herhangi bir bağlantıları sonlandırmak gibi

Ben kalıcı bağlantılar kurtulabilirsiniz eğer PHP kodu kontrol gerektiğini düşünüyorum.

Kalıcı bağlantıları ile sorun php örnek veri istemciye gönderilen ve php örnek bir sonraki müşteriye serbest kadar komut terkettikten sonra bile bunları açık tutmasıdır.

Kalıcı bağlantıları ile başka sorun bazı PHP kodu farklı yerlerinden ya da geçici tablolar ile, başlangıçta daha farklı ayarlarla soketi bırakabilir olmasıdır.

Her bağlantı gidecekseniz sadece bir ya da birkaç mysql_connects ve veritabanı kolu için kod farklı bölgelerinde geçirilir veya kalıcı bağlantılarını kaybetme performans etkisi ihmal edilebilir GLOBAL'de tuttuğu kodunu yazabilirsiniz eğer.

Ve, elbette, max_connections iki katına az zarar var. PHP / Apache çocuk zaten oldukça sık çıkar ve kolları kapatır gibi yine PHP ile çok kullanışlı değil. Max_connections diğer ortamlarda daha yararlıdır.