> Hi All,
> 
> We have  modperl application running on 64bit (2 cores), freebsd 8.2, perl
> 1.14.1, modperl 2.0.5, apache 2.2.21, 24GB of ram and about 5.5k users.
> Additional system details are below.  Under heavy load we are seeing errors
> of the form
> 
> Failed to evaluate module Parser::Legacy: Attempt to reload
> > Parser/Legacy.pm aborted.\nCompilation failed in require at (eval 15635)
> > line 1....
> 
> 
> I vaguely suspect this is a concurrency issue.  Requests that generate such
> errors often, but not always, call to GD.pm to build dynamically generated
> images.  The errors often, but not always, refer to Parser::Legacy a module
> which is part of our application, but I think this is a red-herring since
> it only occurs under load, and I've seen such errors refer to other
> modules, for example DateTime.
> 
> My server is the largest production freebsd machine running this
> application; most servers of this size run Red Hat or Ubuntu and as far as
> I can tell nobody has seen this error before.
> 
> I honestly have no idea if this is a modperl issue, an apache issue, a
> freebsd issue, etc. But I thought I would start here since this is where
> the rubber (requests) meet the road (perl).  Has anyone see such an error
> before? Or know of a similar case that might give me some additional clues?

        I normally use Reload on non-production/test servers where there 
isn't a heavy load as I've encountered problems like this in the past 
as well.  On a test server I can reproduce this error by updating 
scripts and then reloading the page many times quickly (this is most 
easily reproduced where the Windows OS acts as a server as it tends 
to get lost and even crash to the point of requiring a full OS 
reboot; I never have this problem with Unix or Linux which seem to 
isolate processes from the inner workings of the OS, although I have 
been able to reproduce the script reload problem on NetBSD which is 
the OS that I use for my development and production servers).

        I suspect that you're right about it being a concurrency issue, and 
when more scripts/modules have to be reloaded there also seems to be 
a slightly greater instance of this problem (perhaps, I assume, 
because more time is required to dynamically compile more code which 
opens further opportunity for the [suspected] concurrency issue).

        Since development/test servers are far more likely to see regular 
updates to code than production servers, it seems reasonable to me 
that issuing a simple "/etc/rc.d/apache restart" command is a fitting 
solution for production systems which also appeals to administrators 
who desire/need more control.  Although having the automatic 
reloading even on production servers could also be convenient, there 
is a slight advantage with optimization in not having scripts 
constantly checked for changes to determine if they need to be 
reloaded, particularly in high volume scenarios (e.g., when the web 
site gets slash-dotted).

[End of reply.]

> Thanks very much,
> Jason Aubrey
> 
> OS:
> 
> FreeBSD 8.2-RELEASE-p10
> 
> 
> Perl:
> modperl 2.0.5
> 
>   Platform:
>     osname=freebsd, osvers=8.2-release-p2, archname=amd64-freebsd
>     uname='freebsd ww64 8.2-release-p2 freebsd 8.2-release-p2 #0: sat sep
> 17 13:09:25 cdt 2011 root@ww64:usrobjusrsrcsysvmware amd64 '
>     config_args='-sde -Dprefix=/usr/local
> -Darchlib=/usr/local/lib/perl5/5.14.1/mach
> -Dprivlib=/usr/local/lib/perl5/5.14.1
> -Dman3dir=/usr/local/lib/perl5/5.14.1/perl/man/man3
> -Dman1dir=/usr/local/man/man1
> -Dsitearch=/usr/local/lib/perl5/site_perl/5.14.1/mach
> -Dsitelib=/usr/local/lib/perl5/site_perl/5.14.1 -Dscriptdir=/usr/local/bin
> -Dsiteman3dir=/usr/local/lib/perl5/5.14.1/man/man3
> -Dsiteman1dir=/usr/local/man/man1 -Ui_malloc -Ui_iconv -Uinstallusrbinperl
> -Dcc=cc -Duseshrplib -Dinc_version_list=none
> -Dccflags=-DAPPLLIB_EXP="/usr/local/lib/perl5/5.14.1/BSDPAN" -Doptimize=-O2
> -fno-strict-aliasing -pipe -march=native -Ui_gdbm -Dusethreads=n
> -Dusemymalloc=y -Duse64bitint -Dusesitecustomize'
>     hint=recommended, useposix=true, d_sigaction=define
>     useithreads=undef, usemultiplicity=undef
>     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
>     use64bitint=define, use64bitall=define, uselongdouble=undef
>     usemymalloc=y, bincompat5005=undef
>   Compiler:
>     cc='cc', ccflags ='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.14.1/BSDPAN"
> -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe
> -fstack-protector -I/usr/local/include',
>     optimize='-O2 -fno-strict-aliasing -pipe -march=native',
>     cppflags='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.14.1/BSDPAN"
> -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe
> -fstack-protector -I/usr/local/include'
>     ccversion='', gccversion='4.2.1 20070719  [FreeBSD]', gccosandvers=''
>     intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
>     ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=8
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='cc', ldflags =' -Wl,-E  -fstack-protector -L/usr/local/lib'
>     libpth=/usr/lib /usr/local/lib
>     libs=-lm -lcrypt -lutil
>     perllibs=-lm -lcrypt -lutil
>     libc=, so=so, useshrplib=true, libperl=libperl.so
>     gnulibc_version=''
>   Dynamic Linking:
>     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='
>  -Wl,-R/usr/local/lib/perl5/5.14.1/mach/CORE'
>     cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib
> -fstack-protector'
> 
> 
> Characteristics of this binary (from libperl):
>   Compile-time options: MYMALLOC PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
>                         PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT
>                         USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
>                         USE_SITECUSTOMIZE
>   Built under freebsd
>   Compiled at Sep 17 2011 19:35:32
> 
> Apache:
> 
> Server version: Apache/2.2.21 (FreeBSD)
> Server built:   Sep 17 2011 20:41:36
> Server's Module Magic Number: 20051115:30
> Server loaded:  APR 1.4.5, APR-Util 1.3.12
> Compiled using: APR 1.4.5, APR-Util 1.3.12
> Architecture:   64-bit
> Server MPM:     Prefork
>   threaded:     no
>     forked:     yes (variable process count)
> Server compiled with....
>  -D APACHE_MPM_DIR="server/mpm/prefork"
>  -D APR_HAS_SENDFILE
>  -D APR_HAS_MMAP
>  -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
>  -D APR_USE_FLOCK_SERIALIZE
>  -D APR_USE_PTHREAD_SERIALIZE
>  -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>  -D APR_HAS_OTHER_CHILD
>  -D AP_HAVE_RELIABLE_PIPED_LOGS
>  -D DYNAMIC_MODULE_LIMIT=128
>  -D HTTPD_ROOT="/usr/local"
>  -D SUEXEC_BIN="/usr/local/bin/suexec"
>  -D DEFAULT_PIDLOG="/var/run/httpd.pid"
>  -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>  -D DEFAULT_LOCKFILE="/var/run/accept.lock"
>  -D DEFAULT_ERRORLOG="logs/error_log"
>  -D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
>  -D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"
> 


Randolf Richardson - rand...@inter-corporate.com
Inter-Corporate Computer & Network Services, Inc.
Beautiful British Columbia, Canada
http://www.inter-corporate.com/


Reply via email to