Mailinglisten-Archive |
»Enrico Weigelt« sagte am 2002-04-11 um 18:26:26 +0200 : > wenn ich das richtig durchblicke, werden beim pconnect doch > die aeltesten oder am laensten idlen connections weggekillt, wenn > max.conn. ueberschritten wird ... korrigiert mich bitte, wenn ich > da falsch liege. Von der Theorie hast Du recht, allerdings führt pconnect oft dazu, das es sehr, sehr viele Prozesse gibt die nur vor sich hinidlen und somit den Server in die Knie zwingen. pconnect in PHP mit Apache 1.x ist sinnlos. Ich hänge mal eine Mail von Björn Schotte an, in der er gut erklärt, warum pconnects tödlich sind. Alexander Skwar -- How to quote: http://learn.to/quote (german) http://quote.6x.to (english) Homepage: http://www.iso-top.de | Jabber: askwar_(at)_charente.de iso-top.de - Die günstige Art an Linux Distributionen zu kommen Uptime: 18 hours 47 minutes Return-Path: <bounce-iw-tec-2855061_(at)_kbx.de> Delivered-To: askwar_(at)_teich.garten.digitalprojects.com Received: from localhost (localhost.localdomain [127.0.0.1]) by teich.garten.digitalprojects.com (Postfix) with ESMTP id 7FA5DB75F1 for <askwar_(at)_teich.garten.digitalprojects.com>; Wed, 3 Apr 2002 18:46:17 +0200 (CEST) Delivered-To: gr-ath-cx-privat_(at)_gr.ath.cx Received: from gr.ath.cx [217.70.160.109] by localhost with IMAP (fetchmail-5.9.10) for askwar_(at)_teich.garten.digitalprojects.com (single-drop); Wed, 03 Apr 2002 18:46:17 +0200 (CEST) Received: (qmail 7814 invoked by uid 510); 3 Apr 2002 15:24:43 -0000 Delivered-To: host-homelinux-org-ASkwar_(at)_host.homelinux.org Received: (qmail 7811 invoked from network); 3 Apr 2002 15:24:42 -0000 Received: from listserver.kbx.de (212.40.160.60) by devel.net-attach.de with SMTP; 3 Apr 2002 15:24:42 -0000 Date: Wed, 3 Apr 2002 17:24:38 +0200 From: =?iso-8859-1?Q?Bj=F6rn?= Schotte <bjoern_(at)_baer.main.de> To: "Die Technikliste der i-worker" <iw-tec_(at)_kbx.de> Subject: [iw-tec] Re: Mysql: Too many connections Message-ID: <20020403172438.A30900_(at)_baer.main.de> References: <151399253005.20020403171500_(at)_Hofmeir.de> Content-Disposition: inline In-Reply-To: <151399253005.20020403171500_(at)_Hofmeir.de> User-Agent: Mutt/1.3.18i List-Unsubscribe: <mailto:leave-iw-tec-2855061P_(at)_kbx.de> List-Subscribe: <mailto:subscribe-iw-tec_(at)_kbx.de> List-Owner: <mailto:owner-iw-tec_(at)_kbx.de> X-URL: <http://www.i-worker.de> X-List-Host: <http://www.kbx.de/> Reply-To: "Die Technikliste der i-worker" <iw-tec_(at)_kbx.de> Sender: bounce-iw-tec-2855061_(at)_kbx.de X-LYRIS-Message-Id: <LYRIS-2855061-981707-2002.04.03-17.24.40--ASkwar#ho st.homelinux.org_(at)_kbx.de> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline; filename=mutt-teich-12329-90 Content-Transfer-Encoding: quoted-printable * Stefan Hofmeir wrote: > Auf die mysql-Tabellen wird mittels persistenter Verbindung > zugegriffen (mysql_pconnect). > Welche Ursache könnte die plötzliche Überlastung haben? mysql_pconnect(). Weil mysql_pconnect() nur für Persistenz innerhalb eines Apache-Prozess für jeweils ein einziges Verbindungsparameter-Tripel (DB - Host, User, Passwort) sorgt. Ein Apache (ich gehe davon aus, dass Apache zum Einsatz kommt) ist ein forkender Webserver, in der Regel hast du also X "stehende" Apache-Prozesse, die auf eine Connection warten: apache (Mutterprozess) \ \-- apache child 1 | | \-- apache child | | \-- apache child | . . . Jeder dieser Prozesse arbeitet einen Request ab. Kommt zum Zeitpunkt X ein Request an Child 1 für index.php an und index.php öffnet mit mysql_pconnect() eine für diesen Apache Child persistente Verbindung. Kommt zum Zeitpunkt X+Y ein weiterer Request an das gleiche Child mit gleichem mysql_pconnect()-DB-Verbindungstripel, so kann die Verbindung zu MySQL, die noch steht, benutzt werden. Landet der Request dagegen bei einem der anderen Childs, so wird eine neue Verbindung zu MySQL aufgemacht. Irgendwann hast du dann so viele Apache-Prozesse, die jeder für sich eine MySQL-Verbindung offen halten, dass die Anzahl der MySQL-Verbindungen zuviel ist. Abhilfe: auf mysql_connect() umstellen oder ein Tool wie SRM (http://www.vl-srm.net/) einsetzen, das echtes Connection- Pooling kann. Das Problem ist nicht auf PHP zurückzuführen, sondern auf die Art und Weise, wie Apache gemacht ist. -- PHP-Support * realitätsnahe Performance-Messungen mit Code-Analyse Webapplikationsentwicklung * PHP-Schulungen * Consulting 0700-THINKPHP -*- bjoern_(at)_thinkphp.de ------------------------------------------------------------------------ Um diese Liste zu verlassen, schreiben Sie eine Mail an: mailto:leave-iw-tec-2855061P_(at)_kbx.de
php::bar PHP Wiki - Listenarchive