[rt-users] RT/apache eats 100% CPU on login
Kevin Murphy
murphy at genome.chop.edu
Fri Apr 30 14:28:32 EDT 2004
> Seems like an amazing amount of information to provide to be told a
> debugging process!
Yeah, it can save time, though. The information could allow someone
knowledgeable to immediately identify a well-known problem.
> Googling for answers brings up lots of links that indicate that the
> site had a disk crash.
It is annoying that that isn't fixed yet, but the pages in the google
cache can still be useful. Downloading and grepping the mailing list
archives is another possibility. My P.S. contains a script for
downloading the archives.
> debugging process!
I'm not an expert, but:
*) As you've probably done, verify that it is httpd and not postgres
that is hanging by using 'top' or other tool.
*) Even if the problem is in httpd, it could be informative to turn on
postgres logs by putting this in postgresql.conf:
log_min_messages = notice
log_connections = true
log_pid = true
log_statement = true
log_duration = true
log_timestamp = true
and restarting postgres.
*) There is a discussion of hanging mod_perl apps at:
http://perl.apache.org/docs/1.0/guide/debug.html. Several months ago I
went through some similar recommendations to identify the Perl code
where the loop was happening, but I don't really recall my experiences.
I think I used the gdb method. I guess you could try modifying
./bin/webmux.pl if you want to try the "perl trace" method.
Hopefully some more knowledgeable person will hop in if my suggestions
are off the mark.
Kevin Murphy
P.S. Since the mailing list archives don't seem to be very searchable
at the moment, here's a Perl script to download/mirror them locally.
Use zgrep, or gunzip and grep.
#!/usr/bin/perl
# Script to download the RT mailing list archives
# See the POD documentation below.
use Getopt::Long qw(GetOptions);
use LWP::Simple;
use POSIX qw(strftime);
use warnings;
use strict;
my %options;
GetOptions (\%options,
'verbose',
'base-url=s'
) or exit 1;
# main code
my @local_time = localtime;
my $this_year = strftime "%Y", @local_time;
my $this_month = strftime "%B", @local_time;
my @months = qw( January February March April May June July August
September October November December );
# To get the url of an archive file, append
'/$list/$year-$month.txt.gz' to the $archive_host
my $archive_host = $options{'base-url'} ||
'http://pallas.eruditorum.org/pipermail';
my @lists = qw(rt-devel rt-users);
foreach my $list (@lists) {
mkdir $list unless -d $list;
YEAR: foreach my $year (2001..$this_year) {
MONTH: foreach my $month (@months) {
my $file = "$list/$year-$month.txt.gz"; # name of local file
my $url = "$archive_host/$file";
# if the file isn't already here, download it
my $rc = mirror( $url, $file );
if (is_success($rc)) {
print STDERR "Downloaded $url to $file\n" if
$options{'verbose'};
} elsif ($rc == RC_NOT_MODIFIED) {
print STDERR "Did not need to download $url to $file\n" if
$options{'verbose'};
} else {
die "Couldn't download $url, result code = $rc";
}
last YEAR if $year == $this_year and $month eq $this_month;
sleep 1;
} # end foreach month
} # end foreach year
}
exit(0);
__END__
=head1 NAME
get_rt_archives - download RT mailing list archives
=head1 SYNOPSIS
get_rt_archives [options]
Options:
--verbose Show progress.
--base-url=url Base URL of archives.
Default: http://pallas.eruditorum.org/pipermail
Kevin Murphy E<lt>murphy at genome.chop.eduE<gt>.
=head1 DESCRIPTION
B<get_rt_archives> mirrors the RT mailing list archive locally. Use
the B<--verbose> if you want to see what's happening. Use the
--base-url switch (or modify the code) if Best Practical changes the
location of the archive. The script creates subdirectories in the
current
directory called rt-users and rt-devel.
=head1 AUTHOR
Please report bugs or suggestions to Kevin Murphy
E<lt>murphy at genome.chop.eduE<gt>.
=cut
On Friday, April 30, 2004, at 11:59 AM, rtuser at wayne47.com wrote:
> On Fri, Apr 30, 2004 at 11:30:21AM -0400, Kevin Murphy wrote:
>> I think the gurus on the list are more likely to be able to help if
>> you
>> supply your version information for RT, DBIx::FormBuilder, mod_perl or
>> fastcgi, perl, database, and operating system. A link to or the full
>> text of your httpd.conf file is probably a good idea also. Doing
>> google searches for 'site:fsck.com keyword1 ...' is often helpful.
>> Good luck. I have an outstanding RT/postgres issue myself which I am
>> hoping to hear back on while I dabble at it in my spare moments.
>
> Seems like an amazing amount of information to provide to be told a
> debugging process!
>
> rt2-2.0.15_1
> DBIx::FormBuilder - not installed
> mod_perl-1.28
> fastcgi - not installed
> perl-5.6.1_15
> postgresql-7.4.2
> postgresql-client-7.4.2
> FreeBSD 4.8-RELEASE-p17
>
> Googling for answers brings up lots of links that indicate that the
> site had a disk crash.
>
>> On Friday, April 30, 2004, at 10:29 AM, rtuser at wayne47.com wrote:
>>
>>> We're doing an upgrade of an existing RT/postgres environment.
>>> Things are up and stagggering at this point but obviously we are
>>> still missing something. RT will display the login screen and
>>> properly refuses logins if invalid login/password info is given,
>>> which is good. But, if proper info is supplied, apache eats 100%
>>> of the CPU until it's killed (and never returns an updated page).
>>>
>>> Digging through the various logs does not point out anything obvious,
>>> does anyone have any clues as to where to look? Or suggestions on
>>> how to get additional information to debug this?
> _______________________________________________
More information about the rt-users
mailing list