At 11:14 -0400 8/14/02, Tod Harter wrote:
>On Wednesday 14 August 2002 09:54 am, Thomas Seifert wrote:
>I disagree entirely....
>Persistent connections have little or nothing to do with increasing load!
>Given that you mention you are using PHP I'll assume you have mod_php running
>in Apache. Each Apache child process in this configuration will maintain ONE
>open database handle, so 100k pageviews per day I would expect you might max
>at like 30k in one hour, or around 10/second, so you might top out at roughly
>100 Apache child processes at any one time, thus 100 database connections.
>Each DB connection is not a huge overhead, but creating and destroying 10
>database handles PER SECOND is a large overhead!!! Remember, every time mysql
>creates a connection it has to do internal queries on the grant tables. I
>don't know exactly what the overhead of that is going to be, but ANYTHING
>that creates 10 queries per second is putting some strain on your database
>One of the main goals of using Apache modules for scripting was to allow
>persistent database connections. There is really NO reason to give up that
>advantage. Remember, MySQL is multi-threaded, with one thread per connection,
>so the resources for a database connection are on the order of under 100k of
>memory per connection.
There is at least one reason, which is that persistent connections cause
the server to hold open connection slots even the connection isn't actively
being used at the moment. This can cause the MySQL server to run out of
connection slots and result in connections being refused. Using non-persistent
connections under such circumstances can be beneficial because on average,
the server need hold fewer connections open.
This has been found to solve connection-refused issues in a number of
cases on this list.