Yürütülürken bazı sorguları önlenmesi DB çok bağlantıları

4 Cevap php

Benim web sitesinde, kullanıcıların son zamanlarda hata mesajı almaya başladı bir sorunu var:

'/ Var / lib / mysql / mysql.sock' (2) soket yoluyla yerel MySQL sunucusuna bağlanamıyor

Kullanıcıların gelen bilgi almak veritabanı görünümü sayfaları sorgulamak ve veritabanına kullanıcı tarafından oluşturulan bilgi göndermek için mümkün olduğu gibi ben, kodu bağlantı dizeleri doğru olduğunu biliyorum. Bu hata bir anda çok fazla açık bağlantılarının bir sonucu olduğuna inanıyoruz yol açar. Kod php ve her php sayfa itw kendi mysql_open ve mysql_close komutları vardır, bu yüzden bir anda açık çok fazla bağlantı vardır merak ediyorum. Büyük olasılıkla eğer ben herhangi bir gün siteye giriş sadece 20 kişi olduğunu göz önüne alındığında, bilmiyorum. Nasıl kaç bağlantıları herhangi bir zamanda açık söyleyebilirim, ve ben bir şekilde rastgele bir gün boyunca açık bağlantı # izleyebilirsin - Benim soru? Bu nispeten yeni değilim, ve ben veritabanını yönetmek için phpmyadmin kullanıyorum. Aslında çok fazla bağlantılar ise, ne onunla başa çıkmak için en iyi yaklaşım?

Ve ben henüz düşünüyor değilim diğer olası nedenleri vardır? Temel olarak, bir kullanıcının veri teslim edilecek veya bir hata döndürülür olsun, az söylemek, kullanıcı açısından Kaygılı hangi olmadığını belirlemek için öngörülebilir bir yolu yoktur.

This question benim soruna yakın olduğunu ancak bu nedenle benim yeni bir soru gönderme, benim özel sorunu düzeltmek için bir çözüm sağlamaz.

Fikirler için şimdiden teşekkür ederiz.

4 Cevap

Eğer gerçekten bağlantıları kapatmak ya da daha iyisi tek bir isteği üzerine çok sayıda bağlantı açma olmadığından emin olun emin olmalısınız. Eğer bir sayfada include etiketi var ve dahil ve dahil sayfa) (a mysql_open yapacak hem de eğer bir noktada aynı anda iki açık bağlantıları olacaktır. Bunu önlemek ve mysql_open () tarafından sağlanan bağlantıyı yeniden denemelisiniz. Aslında çok :-) kapatmak için emin olun.

Eğer izin kaç bağlantıları yönetmenize yardımcı olabilecek bir "bağlantı havuzu", ile bağlantı havuzu oluşturmak. Ayrıca orada kaç bağlantıları söylemeliyim MYSQL bir komut var.

Here is one command that might work-- show processlist;

Sonra kalan işlemleri göreceksiniz. Her bir kimliği vardır ve yazarak MySQL Monitor süreç kimliği sağ onları öldürebilir:

kill 2309344;

Bu biraz yardımcı olur umarım.

Bu size bir bağlantı kesildikten düşünüyorum ama programcılar sayfaları olduğunda bir konudur .... iyi programcı sadece onun / bağlantıları kapatmak için unuttum!

show status; bir mysql istemcisi içinde size istatistikleri gösterecektir. Özellikle bakmak istiyorum max_used_connections i düşünüyorum.

Teğet Yorum: Eğer web kullanıcılarına mysql hataları göstermek eğer, aklınıza gelebilecek herhangi bir güvenlik açıklarından yararlanmak için bunu yapmak çok kolay.