ActiveState Perl crashes on IIS under heavy load
Magnus Lindgren <[email protected]> Thu, 7 Mar 2013 05:38:37 +0100
| Newsgroups | gmane.comp.lang.perl.active-perl |
|---|---|
| Message-ID | <CALnGJEYpf_azgwdZBLyHJPNs2-ejqY2wC=14=uMFMdqPWz-CUQ@mail.gmail.com> |
--===============0838906467==
Content-Type: multipart/alternative; boundary=047d7ba97d20b260db04d74e47e9
--047d7ba97d20b260db04d74e47e9
Content-Type: text/plain; charset=ISO-8859-1
I have a problem running ActiveState Perl 5.16.2 (32-bit) on a Windows 2008
Server (64-bit) with IIS 7.5. Perl is run using PerlIS.dll with an ISAPI
filter in IIS.
There seems to be a problem related with heavy load and/or concurrent
connections that generate seemingly random error messages.
Here are a few sample errors:
*** 'C:\inetmli\wwwroot\ldope\index.cgi' error message at: 2013/02/28
13:01:07
Variable "%Config" is not imported at C:/Perl/lib/Config.pm line 53.
Variable "%Config" is not imported at C:/Perl/lib/Config.pm line 94.
Global symbol "%Config" requires explicit package name at
C:/Perl/lib/Config.pm line 53.
Global symbol "%Config" requires explicit package name at
C:/Perl/lib/Config.pm line 94.
Compilation failed in require at C:/Perl/lib/Errno.pm line 8.
BEGIN failed--compilation aborted at C:/Perl/lib/Errno.pm line 8.
Compilation failed in require at C:/Perl/lib/IO/Socket.pm line 18.
BEGIN failed--compilation aborted at C:/Perl/lib/IO/Socket.pm line 18.
Compilation failed in require at C:/Perl/site/lib/Net/LDAP.pm line 9.
BEGIN failed--compilation aborted at C:/Perl/site/lib/Net/LDAP.pm line 9.
Compilation failed in require at C:\inetmli\wwwroot\test\index.cgi line 4.
BEGIN failed--compilation aborted at C:\inetmli\wwwroot\test\index.cgi line
4.
*** 'C:\inetmli\wwwroot\ldope\index.cgi' error message at: 2013/02/28
13:01:07
String found where operator expected at (eval 4) line 2, near "croak
'usage: $io->getline()'"
(Do you need to predeclare croak?)
String found where operator expected at (eval 4) line 8, near "croak
'usage: $io->getlines()'"
(Do you need to predeclare croak?)
String found where operator expected at (eval 4) line 10, near "croak
'Can\'t call $io->getlines in a scalar context, use $io->getline'"
(Do you need to predeclare croak?)
syntax error at (eval 4) line 2, near "croak 'usage: $io->getline()'"
syntax error at (eval 4) line 8, near "croak 'usage: $io->getlines()'"
syntax error at (eval 4) line 10, near "croak 'Can\'t call $io->getlines in
a scalar context, use $io->getline'"
Compilation failed in require at C:/Perl/lib/IO/Socket.pm line 12.
BEGIN failed--compilation aborted at C:/Perl/lib/IO/Socket.pm line 12.
Compilation failed in require at C:/Perl/site/lib/Net/LDAP.pm line 9.
BEGIN failed--compilation aborted at C:/Perl/site/lib/Net/LDAP.pm line 9.
Compilation failed in require at C:\inetmli\wwwroot\test\index.cgi line 4.
BEGIN failed--compilation aborted at C:\inetmli\wwwroot\test\index.cgi line
4.
*** 'C:\inetmli\wwwroot\ldope\index.cgi' error message at: 2013/02/28
13:01:07
Can't locate loadable object for module main in @INC (@INC contains:
C:/Perl/site/lib C:/Perl/lib .) at C:/Perl/lib/DynaLoader.pm line 99,
<DATA> line 635.
DynaLoader::croak('Can\'t locate loadable object for module main in
@INC (@INC c...') called at C:/Perl/lib/DynaLoader.pm line 161
DynaLoader::bootstrap('main') called at C:/Perl/lib/DynaLoader.pm line
106
DynaLoader::bootstrap_inherit('main') called at C:/Perl/lib/POSIX.pm
line 0
require POSIX.pm called at C:/Perl/lib/POSIX.pm line 0
PDF::API2::Util::BEGIN() called at C:/Perl/lib/POSIX.pm line 0
eval {...} called at C:/Perl/lib/POSIX.pm line 0
require PDF/API2/Util.pm called at C:/Perl/lib/POSIX.pm line 0
PDF::API2::BEGIN() called at C:/Perl/lib/POSIX.pm line 0
eval {...} called at C:/Perl/lib/POSIX.pm line 0
require PDF/API2.pm called at C:\inetmli\wwwroot\test\index.cgi line 13
Compilation failed in require at C:/Perl/site/lib/PDF/API2/Util.pm line 31,
<DATA> line 635.
BEGIN failed--compilation aborted at C:/Perl/site/lib/PDF/API2/Util.pm line
31, <DATA> line 635.
Compilation failed in require at C:/Perl/site/lib/PDF/API2.pm line 9,
<DATA> line 635.
BEGIN failed--compilation aborted at C:/Perl/site/lib/PDF/API2.pm line 9,
<DATA> line 635.
Compilation failed in require at C:\inetmli\wwwroot\test\index.cgi line 13,
<DATA> line 635.
The script being executed is a very simple test script using many libraries:
use strict;
use Net::LDAP;
require Archive::Zip;
require CAM::PDF;
require DBI;
require Excel::Writer::XLSX;
require HTTP::Request;
require LWP::UserAgent;
require MIME::Base64;
require MIME::QuotedPrint;
require PDF::API2;
require PHP::Serialization;
require Socket;
require Win32::Process;
print "HTTP/1.1 200 OK\nContent-Type: text/plain\n\nI'm OK!";
When requesting this script multiple times I can generate the error quite
often, but there is no apparent pattern to when or what causes it. I even
managed to get the error using just the single last line as a script:
print "HTTP/1.1 200 OK\nContent-Type: text/plain\n\nI'm OK!";
The error from that was:
*** 'C:\inetmli\wwwroot\ldope\index.cgi' error message at: 2013/02/28
12:26:25
syntax error at C:\inetmli\wwwroot\test\index.cgi line 1, near "K!"
Can't find string terminator '"' anywhere before EOF at
C:\inetmli\wwwroot\test\index.cgi line 26, <DATA> line 635.
I must run the script thousands of time from multiple threads from my PC to
generate this error and it only triggers a few times. I believe it to be
triggered by concurrent access.
>From that error it seems it did not read the whole file when it started to
parse it?
This bug is annoying me to insanity! On a heavy load server it generates
errors quite often and sometimes the whole application pool in IIS crashes
and has to be restarted.
Has anyone seen this before? Is there a know work around? Preferably I
would like to stay with ISAPI since the other options (PerlEX and FastCGI
is untested with the current code).
I would be very thankfull for any help or tip to help me solve my problem.
Since I haven't found anything on the web maybe it could also help someone
else who is struggeling with these seemingly random error messages.
So far I've tried:
splitting applications up in different application pools (only positive
effect is that a crashed application now is limited to the current
application pool)
adding multiple worker processes to a single application pool (made the
errors rarer but not dissapear)
setting processor affinity to true
setting application pool recycling both very high and very low to no
apparent effect
using all kinds of "classic"/"pipeline" and ASP.NET settings despite
knowing they probably have nothing to do with it
Anyone got any more ideas?
Note: I sent this message once before to the mailing list about a week ago
but it seems it never got through. This question is also posted on
stackoverflow:
http://stackoverflow.com/questions/15195616/activestate-perl-crashes-on-iis-under-heavy-load
--
New Seed IT Solutions AB
Website: http://www.newseed.se/
--047d7ba97d20b260db04d74e47e9
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>I have a problem running ActiveState Perl 5.16.2 (32-=
bit) on a Windows 2008 Server (64-bit) with IIS 7.5. Perl is run using Perl=
IS.dll with an ISAPI filter in IIS.</div><div>There seems to be a problem r=
elated with heavy load and/or concurrent connections that generate seemingl=
y random error messages.</div>
<div><br></div><div>Here are a few sample errors:</div><div><br></div><div>=
*** 'C:\inetmli\wwwroot\ldope\index.cgi' error message at: 2013/02/=
28 13:01:07</div><div>Variable "%Config" is not imported at C:/Pe=
rl/lib/Config.pm line 53.</div>
<div>Variable "%Config" is not imported at C:/Perl/lib/Config.pm =
line 94.</div><div>Global symbol "%Config" requires explicit pack=
age name at C:/Perl/lib/Config.pm line 53.</div><div>Global symbol "%C=
onfig" requires explicit package name at C:/Perl/lib/Config.pm line 94=
.</div>
<div>Compilation failed in require at C:/Perl/lib/Errno.pm line 8.</div><di=
v>BEGIN failed--compilation aborted at C:/Perl/lib/Errno.pm line 8.</div><d=
iv>Compilation failed in require at C:/Perl/lib/IO/Socket.pm line 18.</div>
<div>BEGIN failed--compilation aborted at C:/Perl/lib/IO/Socket.pm line 18.=
</div><div>Compilation failed in require at C:/Perl/site/lib/Net/LDAP.pm li=
ne 9.</div><div>BEGIN failed--compilation aborted at C:/Perl/site/lib/Net/L=
DAP.pm line 9.</div>
<div>Compilation failed in require at C:\inetmli\wwwroot\test\index.cgi lin=
e 4.</div><div>BEGIN failed--compilation aborted at C:\inetmli\wwwroot\test=
\index.cgi line 4.</div><div><br></div><div>*** 'C:\inetmli\wwwroot\ldo=
pe\index.cgi' error message at: 2013/02/28 13:01:07</div>
<div>String found where operator expected at (eval 4) line 2, near "cr=
oak 'usage: $io->getline()'"</div><div>=A0 =A0 (Do you need=
to predeclare croak?)</div><div>String found where operator expected at (e=
val 4) line 8, near "croak 'usage: $io->getlines()'"</=
div>
<div>=A0 =A0 (Do you need to predeclare croak?)</div><div>String found wher=
e operator expected at (eval 4) line 10, near "croak 'Can\'t c=
all $io->getlines in a scalar context, use $io->getline'"</d=
iv>
<div>=A0 =A0 (Do you need to predeclare croak?)</div><div>syntax error at (=
eval 4) line 2, near "croak 'usage: $io->getline()'"</=
div><div>syntax error at (eval 4) line 8, near "croak 'usage: $io-=
>getlines()'"</div>
<div>syntax error at (eval 4) line 10, near "croak 'Can\'t cal=
l $io->getlines in a scalar context, use $io->getline'"</div=
><div>Compilation failed in require at C:/Perl/lib/IO/Socket.pm line 12.</d=
iv>
<div>BEGIN failed--compilation aborted at C:/Perl/lib/IO/Socket.pm line 12.=
</div><div>Compilation failed in require at C:/Perl/site/lib/Net/LDAP.pm li=
ne 9.</div><div>BEGIN failed--compilation aborted at C:/Perl/site/lib/Net/L=
DAP.pm line 9.</div>
<div>Compilation failed in require at C:\inetmli\wwwroot\test\index.cgi lin=
e 4.</div><div>BEGIN failed--compilation aborted at C:\inetmli\wwwroot\test=
\index.cgi line 4.</div><div><br></div><div>*** 'C:\inetmli\wwwroot\ldo=
pe\index.cgi' error message at: 2013/02/28 13:01:07</div>
<div>Can't locate loadable object for module main in @INC (@INC contain=
s: C:/Perl/site/lib C:/Perl/lib .) at C:/Perl/lib/DynaLoader.pm line 99, &l=
t;DATA> line 635.</div><div>=A0 =A0 DynaLoader::croak('Can\'t lo=
cate loadable object for module main in @INC (@INC c...') called at C:/=
Perl/lib/DynaLoader.pm line 161</div>
<div>=A0 =A0 DynaLoader::bootstrap('main') called at C:/Perl/lib/Dy=
naLoader.pm line 106</div><div>=A0 =A0 DynaLoader::bootstrap_inherit('m=
ain') called at C:/Perl/lib/POSIX.pm line 0</div><div>=A0 =A0 require P=
OSIX.pm called at C:/Perl/lib/POSIX.pm line 0</div>
<div>=A0 =A0 PDF::API2::Util::BEGIN() called at C:/Perl/lib/POSIX.pm line 0=
</div><div>=A0 =A0 eval {...} called at C:/Perl/lib/POSIX.pm line 0</div><d=
iv>=A0 =A0 require PDF/API2/Util.pm called at C:/Perl/lib/POSIX.pm line 0</=
div><div>
=A0 =A0 PDF::API2::BEGIN() called at C:/Perl/lib/POSIX.pm line 0</div><div>=
=A0 =A0 eval {...} called at C:/Perl/lib/POSIX.pm line 0</div><div>=A0 =A0 =
require PDF/API2.pm called at C:\inetmli\wwwroot\test\index.cgi line 13</di=
v><div>Compilation failed in require at C:/Perl/site/lib/PDF/API2/Util.pm l=
ine 31, <DATA> line 635.</div>
<div>BEGIN failed--compilation aborted at C:/Perl/site/lib/PDF/API2/Util.pm=
line 31, <DATA> line 635.</div><div>Compilation failed in require at=
C:/Perl/site/lib/PDF/API2.pm line 9, <DATA> line 635.</div><div>
BEGIN failed--compilation aborted at C:/Perl/site/lib/PDF/API2.pm line 9, &=
lt;DATA> line 635.</div><div>Compilation failed in require at C:\inetmli=
\wwwroot\test\index.cgi line 13, <DATA> line 635.</div><div>The scrip=
t being executed is a very simple test script using many libraries:</div>
<div><br></div><div>use strict;</div><div>use Net::LDAP;</div><div>require =
Archive::Zip;</div><div>require CAM::PDF;</div><div>require DBI;</div><div>=
require Excel::Writer::XLSX;</div><div>require HTTP::Request;</div><div>
require LWP::UserAgent;</div><div>require MIME::Base64;</div><div>require M=
IME::QuotedPrint;</div><div>require PDF::API2;</div><div>require PHP::Seria=
lization;</div><div>require Socket;</div><div>require Win32::Process;</div>
<div><br></div><div>print "HTTP/1.1 200 OK\nContent-Type: text/plain\n=
\nI'm OK!";</div><div>When requesting this script multiple times I=
can generate the error quite often, but there is no apparent pattern to wh=
en or what causes it. I even managed to get the error using just the single=
last line as a script:</div>
<div><br></div><div>print "HTTP/1.1 200 OK\nContent-Type: text/plain\n=
\nI'm OK!";</div><div>The error from that was:</div><div><br></div=
><div>*** 'C:\inetmli\wwwroot\ldope\index.cgi' error message at: 20=
13/02/28 12:26:25</div>
<div>syntax error at C:\inetmli\wwwroot\test\index.cgi line 1, near "K=
!"</div><div>Can't find string terminator '"' anywher=
e before EOF at C:\inetmli\wwwroot\test\index.cgi line 26, <DATA> lin=
e 635.</div>
<div>I must run the script thousands of time from multiple threads from my =
PC to generate this error and it only triggers a few times. I believe it to=
be triggered by concurrent access.</div><div><br></div><div>From that erro=
r it seems it did not read the whole file when it started to parse it?</div=
>
<div><br></div><div>This bug is annoying me to insanity! On a heavy load se=
rver it generates errors quite often and sometimes the whole application po=
ol in IIS crashes and has to be restarted.</div><div><br></div><div>Has any=
one seen this before? Is there a know work around? Preferably I would like =
to stay with ISAPI since the other options (PerlEX and FastCGI is untested =
with the current code).</div>
<div><br></div><div>I would be very thankfull for any help or tip to help m=
e solve my problem. Since I haven't found anything on the web maybe it =
could also help someone else who is struggeling with these seemingly random=
error messages.</div>
<div><br></div><div>So far I've tried:</div><div><br></div><div>splitti=
ng applications up in different application pools (only positive effect is =
that a crashed application now is limited to the current application pool)<=
/div>
<div>adding multiple worker processes to a single application pool (made th=
e errors rarer but not dissapear)</div><div>setting processor affinity to t=
rue</div><div>setting application pool recycling both very high and very lo=
w to no apparent effect</div>
<div>using all kinds of "classic"/"pipeline" and <a hre=
f=3D"http://ASP.NET">ASP.NET</a> settings despite knowing they probably hav=
e nothing to do with it</div><div>Anyone got any more ideas?</div><div><br>
</div><div>Note: I sent this message once before to the mailing list about =
a week ago but it seems it never got through. This question is also posted =
on stackoverflow:</div><div><br></div><div><a href=3D"http://stackoverflow.=
com/questions/15195616/activestate-perl-crashes-on-iis-under-heavy-load">ht=
tp://stackoverflow.com/questions/15195616/activestate-perl-crashes-on-iis-u=
nder-heavy-load</a></div>
<div><br></div>-- <br>New Seed IT Solutions AB<br>Website:=A0<a href=3D"htt=
p://www.newseed.se/" target=3D"_blank">http://www.newseed.se/</a><br></div>
--047d7ba97d20b260db04d74e47e9--
--===============0838906467==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
--===============0838906467==--