Проблема: до 400 виясщих потоков mysql - в общем случае количество
соединений с базой примерно равно количеству процессов апача.
Подозреваю, что дело в следующем: когда вызывается скрипт, создается
новое соединение, которое живет до тех пор, пока не умрет данный процесс
апача. апач и mysql живут на одном хосте. mtop показывает, что
практически все соединения находятся в состоянии sleep.

Имеем скрипт вида: 
package WpTOP::Browser;

use Apache::Constants qw(:common);
use Apache::Request;
use HTML::Template;
use DBI;
..... 
my $conninfo = "DBI:mysql:database=$dbname;host=$dbhost;port=3306";

sub handler
{
my $dbhandler = DBI->connect($conninfo , $dbuser,
$dbpass,{'RaiseError'=> 1, 'AutoCommit' => 1}) || die "Can't connect to
DB:$!";
#чего-то тут делаем с запросом
}

sub DESTROY
{
$dbhandler->disconnect(); #Хотя это вобщем-то игнорируется.
}

Из httpd.conf

PerlModule Apache::DBI
PerlRequire /home/alex/startup.pl
PerlFreshRestart On

<VirtualHost 1.1.1.1>
    User user
    Group user
    ServerAdmin [EMAIL PROTECTED]
    DocumentRoot /home/user/site
    ServerName user.com
    ServerAlias www.user.com
    ErrorLog /home/user/logs/error.log
    CustomLog /home/user/logs/access.log full
     
    PerlModule Apache::DBI
    PerlModule WpTOP::Browser
    <Location /Browser>
            SetHandler perl-script
            PerlHandler  WpTOP::Browser
            PerlSendHeader On
    </Location>
    <Location /View>
        PerlModule Apache::DBI
        PerlModule WpTOP::View
        SetHandler perl-script
        PerlHandler  WpTOP::View
        PerlSendHeader On
    </Location>
 /VirtualHost>

startup.pl:

wptop:/home/funtus/public_html# cat /home/alex/startup.pl
#!/usr/local/bin/perl -w
                                                                        
$ENV{MOD_PERL} or die "GATEWAY_INTERFACE not Perl!";
use Apache::Registry;
use Apache::DBI;
#use Apache::AuthDBI;
use strict;
$Apache::DBI::DEBUG = 1;
.........
my $conninfo = "DBI:mysql:database=$dbname;host=$dbhost;port=3306";
Apache::DBI->connect_on_init
($conninfo , $dbuser, $dbpass,{'RaiseError' => 1, 'AutoCommit' => 1});

Ответить