Son gözden geçirme: Eylül 2026 · MariaDB 10.11 ve MySQL 8.0 resmî dokümanına göre
Hızlı çözüm
ERROR 1040 (HY000): Too many connections — MySQL too many connections hatası, veritabanı sunucusundaki eş zamanlı bağlantı sayısının max_connections sınırına dayandığını gösterir. Önce bağlantıları neyin tuttuğunu bulun, sınırı ancak sonra ve belleğe göre yükseltin.
sudo mysql ile girip SHOW FULL PROCESSLIST; çalıştırın.Sleep durumunda bekleyen bağlantılar çoksa wait_timeout değerini düşürün.max_connections değerini bellek hesabıyla yükseltin.| Panel | cPanel (paylaşımlı, yalnız uygulama tarafı) · VPS/VDS’te panel yok |
|---|---|
| Sistem | MariaDB 10.11 / MySQL 8.0, Ubuntu 22.04/24.04, AlmaLinux 8/9 |
| Yetki | Paylaşımlıda cPanel kullanıcısı · VPS/VDS’te root ya da sudo |
| Narhost ürünü | VPS Sunucu, VDS Sunucu |
Başlamadan önce
SQLSTATE[08004] [1040] Too many connections biçiminde görünür.free -h ile öğrenin; sınır hesabı buna göre yapılacak.Her istemci bağlantısı sunucuda bir iş parçacığı ve kendi arabellekleri demektir. Sınır dolunca yeni bağlantılar reddedilir, site “Error establishing a database connection” benzeri bir sayfa gösterir. MariaDB’de varsayılan sınır 151’dir ve SUPER ya da CONNECTION ADMIN yetkili kullanıcı için bir bağlantı ayrılır; bu yüzden hata sırasında bile root ile içeri girebilirsiniz. Ayrıntı MariaDB sistem değişkenleri dokümanında.
Sık görülen nedenler: sorgusu bitmiş ama kapatılmamış bağlantılar (Sleep), PHP’de kalıcı bağlantı (pconnect) kullanan eklentiler, üst üste binen cron görevleri, kilitlenen bir tablo yüzünden birikip bekleyen sorgular ve bot trafiği. Sınırı yükseltmek bu durumların çoğunda sorunu yalnız erteler.
Beklenen sonuç: trafik zirvesinde hata seyrekleşir.
Beklenen sonuç: EP ya da CPU grafiğinde hatanın saatine denk gelen bir sınır aşımı görürseniz neden budur.
max_connections değeri müşteri tarafından değiştirilemez; hata metnini ve saatini talebe yazın.sudo mysql -e "SHOW VARIABLES LIKE 'max_connections';"
sudo mysql -e "SHOW GLOBAL STATUS LIKE 'Max_used_connections';"
sudo mysql -e "SHOW FULL PROCESSLIST;"
Beklenen sonuç: Max_used_connections sınıra eşitse sınır gerçekten dolmuştur. İşlem listesinde Command sütunu çoğunlukla Sleep ise sorun kapatılmayan bağlantılardır; Query ve uzun Time değerleri ise yavaş sorgulara işaret eder.
sudo mysql -e "KILL 1234;"
Beklenen sonuç: 1234 yerine işlem listesindeki Id değerini yazın; bağlantı kapanır.
/etc/mysql/mariadb.conf.d/50-server.cnf, MySQL için /etc/mysql/mysql.conf.d/mysqld.cnf dosyasının [mysqld] bölümüne yazın:
[mysqld]
max_connections = 300
wait_timeout = 300
Beklenen sonuç: sudo systemctl restart mariadb (MySQL’de mysql) sonrası yeni değerler geçerli olur.
Dikkat
Sınırı bellek hesabı yapmadan yükseltmeyin. Kaba ölçü: innodb_buffer_pool_size + bağlantı sayısı × (sort, join, read arabellekleri + iş parçacığı yığını). Toplam RAM’i aşarsa çekirdek veritabanı sürecini sonlandırır ve hata daha ağır hâle gelir.

Sonuç
SHOW VARIABLES LIKE 'max_connections'; yeni değeri gösteriyor ve yoğun saatlerde Max_used_connections sınırın belirgin biçimde altında kalıyorsa sorun çözülmüştür. SHOW GLOBAL STATUS LIKE 'Threads_connected'; ile anlık bağlantı sayısını da izleyebilirsiniz.
Narhost desteği
Talebe şunları ekleyin: alan adı ya da sunucu IP adresi, hatanın birebir metni ve saati, VPS’teyseniz SHOW FULL PROCESSLIST çıktısı. Paylaşımlı hostingte sunucu tarafını biz inceleriz. Yük sürekli artıyorsa paylaşımlı hostingden VPS’e geçiş yazısı karar vermenize yardım eder.
Sonraki adımlar
Ayrılan tek bağlantıyı başka bir yetkili oturum kullanıyor olabilir. Web sunucusunu ya da PHP-FPM’i kısa süreliğine durdurup bağlantıların düşmesini bekleyin, sonra sudo mysql ile girin.
Evet, SET GLOBAL max_connections = 300; anında uygulanır ama yeniden başlatmada kaybolur. Kalıcı olması için değeri yapılandırma dosyasına da yazın.
Hayır. O hata sunucu genelindeki değil, tek bir veritabanı kullanıcısına tanınan sınırın dolduğunu gösterir; paylaşımlı hostingte bu sınır için de destek talebi açılır.
Bu makale sorununuzu çözdü mü?
Geri bildiriminiz için teşekkürler.
Çözemediniz mi?
Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.