Hello,
I am running log4perl in a mod_perl2 script on an apache with worker
MPM.
Startig from 10 concurrent users, I am getting the following messages in
the error log.
[Fri Mar 20 10:37:28 2009] [error] [client 192.168.1.201] Couldn't set semaphore during object creation: Identifier removed at /usr/share/perl5/Log/Log4perl/Appender/Synchronized.pm line 45\n
More concurrent users means more of these errors.
The requests fail subsequently with http status 500.
Versions:
- Kernel: 2.6.22-14-generic
- Apache: 2.2.8 worker, self compiled
- log4perl 1.10-1 (Ubuntu)
Configuration:
Apache:
PerlRequire /apache/startup.pl
PerlWarn On
PerlTaintCheck On
Alias /action/ /apache/action/
<Location /action/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Location>
Log4Perl:
...
my $conf = qq(
log4perl.category = $threshold, Syncer
# File appender (unsynchronized)
log4perl.appender.Logfile = Log::Log4perl::Appender::File
log4perl.appender.Logfile.autoflush = 1
log4perl.appender.Logfile.filename = $filename
log4perl.appender.Logfile.mode = append
log4perl.appender.Logfile.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.Logfile.layout.ConversionPattern = %d{dd/MMM/yyyy:HH:mm:ss} %p %m%n
# Synchronizing appender, using the file appender above
log4perl.appender.Syncer = Log::Log4perl::Appender::Synchronized
log4perl.appender.Syncer.appender = Logfile
log4perl.appender.Syncer.destroy = 1
);
Log::Log4perl::init( \$conf );
my $logger = Log::Log4perl::get_logger();
...
The threshold is set to INFO meaning that every call results in a single
log entry being made. The script runs for about one second.
When I tried out running the script as a handler (instead of the registry method), this did not
change the behaviour.
I understand that there are performance limits and eventually failures,
but is not that a bit early, with only ten concurrent usersr?
So I guess I have a misconfigured setup. Could anybody give me a good
hint? I googled for my error, but without luck.
Regs,
Christian Folini
--
I myself am human and free only to the extent that I acknowledge the
humanity and liberty of all my fellows...
--- Mikhail Bakunin
|