Grokbase
Topics Posts Groups | in
x
[ help ]

[Catalyst] Troubleshooting Help Please

View PostFlat  Thread  Threaded | < Prev - Next >
jshirley [Catalyst] Troubleshooting Help Please
| +1 vote
[ Profile | Reply to group ] [ Flat  Thread  Threaded ]
On Mon, Oct 6, 2008 at 6:47 AM, Paul Cory <pcory@wcpss.net> wrote:
> All,
>
> I've Googled repeatedly, and RTFMed, and I've reached a point where I have
> to ask for help.
>
> I have a Catalyst Web App that requires users to log in before they can do
> anything (it's a front end for managing mailing list subscriptions).
>
> This runs on Apache 1.3/mod_perl 1/perl 5.8.8/MySQL 5.0 on SLES 10. Apache,
> perl and mod_perl are compiled from source, not the distribution versions.
>
> The problem is that as the day progresses, and the application sees more and
> more use, login behavior becomes inconsistent.
>
> It starts out working flawlessly. Then, after a while, valid logins start to
> occasionally fail. Trying again gets you in - at the start. As time passes,
> the problem gets progressively worse and it eventually gets to the point
> where people quit trying because the success rate for logging in drops to
> 10% or less.
>
> By fail, I mean you go to the log in screen, put in a valid username and
> password combination, and then get seamlessly redirected to the log in
> screen, as if you had just arrived fresh to the app.
>
> Restarting Apache solves the problem, at least for a while. And then things
> begin to degrade again...
>
> I've verified that the problem is not end user error. Once you get it to
> recognize your login, the system work fine.
>
> Other Web Apps I've written, using HTML::Mason and running on this exact
> same server under mod_perl do not exhibit this behavior.
>
> I've checked the Apache error log, and I can't find any related errors.
>
> I'm using the following plug-in for authentication:
>
>         Authentication
>                 Session
>                        Session::Store::FastMmap
>                        Session::State::Cookie
>
>
> The problem did not appear in testing, only in production.
>
> Any ideas on where to look, or what to try?
>
> FWIW, here's the login controller code (no promises on it being great -
> programming is something I've learned in self-defense). The controller
> handles log ins for both the regular and admin side of the application.
> First it checks the regular users realm, and, if that fails, then the admin
> users realm (two separate databases) .
>
>
>
> package esubscription::Controller::Login;
>
> use strict;
> use warnings;
> use base 'Catalyst::Controller';
>
>
>
> sub index : Private {
>    my ( $self, $c ) = @_;
>
>        # Get the username and password from form
> my $login = $c->request->params->{login} || "";
> my $password = $c->request->params->{password} || "";
>
> # If the username and password values were found in form
>        if ($login && $password) {
>            # Attempt to log the user in
> if ( $c->authenticate({login => $login, password => $password}) )
> {
> # If successful, then let them use the application
> $c->response->redirect($c->uri_for('/'));
>                return;
>            } else {
>
> if ( $c->authenticate({login => $login, password =>
> $password}, 'admin') ) {
>
> $c->response->redirect($c->uri_for('/admin/'));
>                                        return;
>
>                }
>
>                else { # Set an error message
>
> $c->stash->{message} = "Bad username or password.";
> $c->stash->{login} = "$login";
>                }
>            }
>        }
>
> # If either of above don't work out, send to the login page
> $c->stash->{template} = 'templates/forms/login_form.mas';
> }
>
>
>
> 1;
>
>
>
> Also, there's this snippet in the root controller that handles checking for
> valid user:
>
>        # If a user doesn't exist, force login
>
>        if (!$c->user_exists) {
>
> $c->response->redirect($c->uri_for('login'));
> # Return 0 to cancel 'post-auto' processing and prevent use
> of application
>                return 0;
>        }
>
>
>
> Thanks for the help!
>
>
> Paul Cory
> WCPSS Webmaster
> [email protected: p...@wcpss.net]
>
>
>


Please also send your applications configuration so we can see your
auth store.  I do just have to ask though... why such ancient
software?  Apache 1 and MP1?  Ouch.

Off the top of my head, you are running out of space on your cache dir
(how big is your tmp dir?).  If you change your Session::Store or
setup for a larger cache it'd probably alleviate the problem.

-J

Thread : [Catalyst] Troubleshooting Help Please
1)
Paul Cory All, I've Googled repeatedly, and RTFMed, and I've reached a point where I have to ask for help. I...
2)
jshirley Please also send your applications configuration so we can see your auth store. I do just have to...
3)
James R. Leu See my comment at the end. ... or running out of file descriptors. Do a 'lsof -p <pid>' where PID...
paperclip
4)
Paul Cory All, Thanks for the help! I'm going to summarize the problem to recap, the solutions proposed, and...
5)
Moritz Onken Storing the session with FastMmap is not a good idea. If the cache_size of FastMmap is exhausted it...
6)
Moritz Onken Actually you need to set that parameter somewhere else. See the docs to Session::Store::FastMmap...
spacer
View PostFlat  Thread  Threaded | < Prev - Next >