500 Server error on Solaris 10
am 21.10.2006 00:36:02 von chris.boyce
Hello...
We have been using LWP::UserAgent for about four years (to power a web
site monitoring script), without any problems. The script runs directly
on each web server, querying itself. However, we have just started
using Solaris 10 for the first time, and suddenly our monitoring script
is getting this error at random times:
500 Server closed connection without sending any data back
We are using Solaris 10, SPARC, and the following modules as required by
our lwp script:
Time-HiRes-1.74
URI-1.35
HTML-Parser-3.45
libnet-1.19
libwww-perl-5.803
(we've tried both perl 5.8.7 and 5.8.8)
The code that makes the request looks like this:
# Run the request...
$http_response = $agent->request($request);
$content = $http_response->content;
$status_line = $http_response->status_line;
Our Use section is:
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Headers;
use HTTP::Request;
use HTTP::Response;
use Net::SMTP;
use Getopt::Long;
use Time::Local;
use Time::HiRes 'time','sleep';
I have tried using the same script on another machine, and direct
requests to the failing machine's web server. This works fine. All
other servers are Solaris 8 or 9. This machine is running 10. Can
anyone think of a reason why LWP would be receiving an empty response
when running on our Solaris 10 server?
Your ideas are very much appreciated. As I said, we've never had a
problem with LWP (or this script) in the 4 years we've used it on
Solaris 8 and 9.
thanks
-Chris
--
Chris Boyce
Systems Engineer, RHCE
Berbee
5520 Research Park Drive, Madison WI 53711
Re: 500 Server error on Solaris 10 [Solved]
am 03.11.2006 17:05:43 von chris.boyce
There is a known issue with the new "tcp fusion" feature in Solaris 10,
which takes any internally bound traffic (ie, client and server are the
same machine) and strips out the TCP protocol to reduce overhead. You
can get more information from Sunsolve document ID 102576.
The work-around is to disable tcp fusion in the /etc/system file (and
reboot) like so:
set ip:do_tcp_fusion = 0x0
The issue is apparently fixed in kernel patches 118833-24 or later.
Just FYI: The error messages from libwww seemed to vary, depending on
what version I used. Any 500-type error encountered (for no apparent
reason) on Solaris 10 - where client and server are local - may be a
symptom of this bug.
thanks
-Chris
On Fri, 2006-10-20 at 17:36 -0500, Chris Boyce wrote:
> Hello...
>
> We have been using LWP::UserAgent for about four years (to power a web
> site monitoring script), without any problems. The script runs directly
> on each web server, querying itself. However, we have just started
> using Solaris 10 for the first time, and suddenly our monitoring script
> is getting this error at random times:
>
> 500 Server closed connection without sending any data back
>
> We are using Solaris 10, SPARC, and the following modules as required by
> our lwp script:
>
> Time-HiRes-1.74
> URI-1.35
> HTML-Parser-3.45
> libnet-1.19
> libwww-perl-5.803
> (we've tried both perl 5.8.7 and 5.8.8)
>
> The code that makes the request looks like this:
>
>
> # Run the request...
> $http_response = $agent->request($request);
>
> $content = $http_response->content;
> $status_line = $http_response->status_line;
>
>
> Our Use section is:
>
> use LWP::UserAgent;
> use HTTP::Cookies;
> use HTTP::Headers;
> use HTTP::Request;
> use HTTP::Response;
> use Net::SMTP;
> use Getopt::Long;
> use Time::Local;
> use Time::HiRes 'time','sleep';
>
>
> I have tried using the same script on another machine, and direct
> requests to the failing machine's web server. This works fine. All
> other servers are Solaris 8 or 9. This machine is running 10. Can
> anyone think of a reason why LWP would be receiving an empty response
> when running on our Solaris 10 server?
>
> Your ideas are very much appreciated. As I said, we've never had a
> problem with LWP (or this script) in the 4 years we've used it on
> Solaris 8 and 9.
>
> thanks
>
> -Chris
>