So have you found/confirmed that the client count does keeping ticking upwards once the site stops processing requests?From: suppressed [mailto:interchange-users- suppressed On Behalf Of John1 Sent: Wednesday, November 16, 2005 8:05 AM On Wednesday, November 16, 2005 12:32 AM, suppressed wrote:Last night I recompiled with MaxClients to 1024 and this morning I ran into the problem again, also MaxClients was not reached this time, however I was unable to reach the IC site. At least in my case I do not believe MaxClients to be the issue.I now agree - after some investigation I think that MaxClients issue is a symptom rather than the cause. No doubt if you have increased MaxClients to 1024 you are now not hitting this limit, but are upi still seeing a high Apache client count?? I think that once the Interchange daemon starts to have problems this must have a cascade effect on the Apache processes being spawnedI believe that my site only actually ceases to respond once MaxClients is reached. Even though MaxClients is no doubt not the underlying cause of the problem (but a symptom) what I would like to do is automatically restart apache and interchange when MaxClients is reached as this would keep website downtime to a minimum. It occurs to me that a good way of doing this would be to pipe the Apache error log through a script which greps for "server reached MaxClients setting, consider raising the MaxClients setting". As soon as the script sees the above error message being piped to it I would like it to restart the services without delay. Is this possible? I was wondering if anyone knows how to do this? e.g. an example script. If so, I would be very grateful as I am currently clueless on how to attempt this. Thank you.John, I wrote a script yesterday that runs via cron and what it does is it checks if a certain ic page returns a certain string. If the page does not return properly it tries again, up to 5 times. If after 5 times it doesn't get the page back it restarts Interchange as well as emails an address to alert that the site restarted. This way we see the problem before MaxClients is reached since I have figured out that MaxClients is not reached until some undetermined amount of time after the site stops processing requests.
This morning the site went
down and my script immediately noticed the problem and restarted IC
properly. Of course this is just to keep the site up, we still need
to figure out why it's happening.
Below is the script:
#!/usr/bin/perl
use LWP;
my $url = 'http://www.yoursite.com/checkic.html';
## CMD to restart
my $IC_COMMAND = "/root/scripts/icrestart.sh";
## Where is sendmail?
my $SENDMAIL_CMD = "/usr/sbin/sendmail";
## what mail account should we alert to?
my $MAIL_RECEIVER = "suppressed";
## what should the subject be?
my $MAIL_SUBJECT="Alert!";
## who should we send from?
my $MAIL_SENDER="suppressed";
my $browser = LWP::UserAgent->new;
$browser->timeout(30);
my $count = 0;
my $up = 0;
while ($count <= 4) {
my $response = $browser->get($url);
if ($response->content =~ m/UP/) {
$count = 5;
$up = 1;
}
$count++;
}
if ($up == 1) {
} else {
system $IC_COMMAND;
mail_admin("IC restarted!");
print "IC restarted!";
}
sub mail_admin {
my $mail = "From: $MAIL_SENDER <>\nTo: $MAIL_RECEIVER\nSubject:
$MAIL_SUBJECT\nX-Priority: 1\n\n$_[0]\n";
print STDERR $mail if $DEBUG;
return if $NO_MAIL;
open SENDMAIL, "| $SENDMAIL_CMD -t" and
print SENDMAIL $mail and
close SENDMAIL or
die "Failed to send alert mail to $MAIL_SENDER: $!";
}
Then put a page "checkic.html" on your site with the content of "UP"
in the pages directory and put the url to this page in the $url
variable above.
Fantastic, thanks Ron, just implemented it! It occurs to me that it may be
useful to call a few system commands before restarting interchange, and to
add the output from these commands to the alert e-mail sent.
e.g. #Number of connections to Apache just before Interchange is restarted netstat -nt | grep :80 | wc -l netstat -nt | grep :443 | wc -l#Number of httpd, interchange and mysql processes running just before Interchange is restarted
ps -elf | grep -c httpd ps -elf | grep -c interchange ps -elf | grep -c mysqld#Number of connections each IP address has to server just before Interchange is restarted
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Although I could just about work out how to insert these into your script it
would involve educated guesswork and no doubt ugly coding, so would be
grateful if you could insert these system calls or any other similar or
additional commands that you think may provide useful information.
If you think this would be useful would you mind also adding this as my Perl isn't up to it.You could modify the checkic.html page to also do db lookups to verify the db connection is still valid.
Thanks for you help!___________________________________________________________ To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre. http://uk.security.yahoo.com
_______________________________________________ interchange-users mailing list suppressed http://www.icdevgroup.org/mailman/listinfo/interchange-users
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.