Solved

Apache CGI script timing out

Posted on 2008-10-17
4
359 Views
Last Modified: 2013-12-25
I'm an experienced software developer but this issue has me totally stumped.  I have two Linux servers, one sitting in Virginia, one in Bangalore, India.  Both are running "Red Hat Enterprise Linux ES release 4 (Nahant Update 4)" and apache 2.0.52.  The problem is, on the machine in Bangalore a perl CGI script always times out after 300 seconds.  Both systems have identical httpd.conf files (except ServerName) , both have the same tcp/ip settings (when I run /sbin/sysctl -a | grep net.inet.tcp I get the same results).  I tried running httpd on the Bangalore system with -f /etc/httpd/conf/httpd.conf to make sure it was picking up the "Timeout 5400" line in httpd.conf.  I even put in both Timeout and TimeOut in the file just in case case matters.

The only difference between the two systems that I can tell is that one system is running a 32 bit compiled httpd and one a 64 bit binary.  I've attached a simple CGI script.  On the Virginia system, about 5 minute go by and then it reports "Slept 301 seconds".  When I run the same CGI script on the Bangalore system, my browser waits forever.  If I change it to sleep 299 seconds, it works.  So somewhere something is timing out at 300 seconds, the question is what?  My browser just sits there forever waiting for a response, and there is nothing unusual logged in the error_log or access_log to help me debug where the response is being dropped.

#!/usr/bin/perl
 

my $sleep_sec = 5 * 60 + 1;

sleep ($sleep_sec);
 

print "Content-type: text/plain\n\n";

print "Slept $sleep_sec seconds\n";

exit 0;

Open in new window

0
Comment
Question by:Clouseau2
  • 2
4 Comments
 
LVL 48

Expert Comment

by:Tintin
ID: 22745721
Are you going through a proxy server to get to either server?

Have you tried seeing what results you get with a different browser?

Have you tried running tcpdump on the server in India to see if it is network related?

Does it make any difference if you add a

$|=1;

to the script?
0
 

Author Comment

by:Clouseau2
ID: 22746126

There is no proxy server, this is through a corporate WAN, I'm on a VPN -- but the problem is also happing from people on the WAN.

I haven't tried a different browser but others are having the same problem and they use IE.

I've attached output from the tcpdump

Adding $| = 1 makes no difference.  The CGI script I wrote it just a simple test script that demonstrates the problem - ALL CGI scripts are having this problem on the system.

tcp.txt
0
 
LVL 12

Expert Comment

by:hfraser
ID: 22746563
I'd suggest doube-checking the proxy server, even on a WAN. It's not unreasonable to deploy one in a global wan to reduce traffic/latency on trans-ocean hops.

Secondly see if the Bangalore site (or anywhere in between) is running an IPS that's checking for http tunnels. A 5 minute response time is quite long for normal http traffic, and might be triggering an IPS signature that breaks the connection.
0
 

Accepted Solution

by:
Clouseau2 earned 0 total points
ID: 22782629

Well I had them try out the delay.cgi script on the local LAN and it did NOT timeout -- so the problem must be in the network between Bangalore (actually Chennai got them mixed up lol) -- I'll give hfraser to solution since that did give me the idea to check that!

I still don't know what the real problem is, but now it's out of my hands and in the hands of the networking people ... the apache server is working perfectly.
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Batch, VBS, and scripts in general are incredibly useful for repetitive tasks.  Some tasks can take a while to complete and it can be annoying to check back only to discover that your script finished 5 minutes ago.  Some scripts may complete nearly …
This article will show, step by step, how to integrate R code into a R Sweave document
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …
The viewer will learn how to dynamically set the form action using jQuery.

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now