Changeset 14930 for misc/runpugs

Show
Ignore:
Timestamp:
12/20/06 16:57:09 (2 years ago)
Author:
andara
Message:

[runpugs]
-Now with preloaded pugs sessions for faster startup.

Location:
misc/runpugs
Files:
2 added
6 modified

Legend:

Unmodified
Added
Removed
  • misc/runpugs/htdocs/runpugs/index.html

    r14885 r14930  
    77<body> 
    88 
    9 <iframe src="/perl/runpugs.pl" id="scratch" name="scratch" 
     9<iframe src="/perl/runpugs3.pl" id="scratch" name="scratch" 
    1010style="visibility:hidden" width="700px" height="1px"  onLoad="getreply()"></iframe> 
    1111<div id="mainwindow"> 
  • misc/runpugs/lib/Web/Terminal/Server.pm

    r14885 r14930  
    3131 
    3232our %terminals=(); 
    33 our %sessions_per_ip=(); 
     33our %nsessions_per_ip=(); 
    3434 
    3535my $v=1-$Web::Terminal::Settings::daemon; 
     
    5050    if ($terminals{$id}->{pid}) {     
    5151    $terminals{$id}->{called}=time; 
    52         #if swap to other app 
     52        #if swap to other app #PRE: This will result in a new create() 
    5353        if ($app != $terminals{$id}->{'app'}) { 
    5454                 &killterm($id); 
     
    6060                my $error= $term->{'error'}; 
    6161                if ($error==1) { # Failed to create a new terminal 
    62                 $sessions_per_ip{$ip}--; 
     62                $nsessions_per_ip{$ip}--; 
    6363                &killterm($id); 
    6464                }  
     
    7373                if ( $cmd eq $Web::Terminal::Settings::quit_command ) { 
    7474            &killterm($id); 
    75             $sessions_per_ip{$ip}--; 
     75            $nsessions_per_ip{$ip}--; 
    7676            return $lines; 
    7777        } elsif ($terminals{$id}->{error}==1) { 
    7878            &killterm($id); 
    79             $sessions_per_ip{$ip}--; 
     79            $nsessions_per_ip{$ip}--; 
    8080        } 
    8181                return $lines; 
     
    8484        } 
    8585        } else { 
    86         if ($sessions_per_ip{$ip}>$Web::Terminal::Settings::nsessions_ip) { 
     86        if ($nsessions_per_ip{$ip}>$Web::Terminal::Settings::nsessions_ip) { 
    8787        print LOG2 "MAX nsessions for $ip reached\n"; 
    8888        print "MAX nsessions for $ip reached\n" if $v; 
     
    9090        } else { 
    9191        print "New $id\n" if $v; 
    92             $sessions_per_ip{$ip}++; 
     92            $nsessions_per_ip{$ip}++; 
    9393            print "$app $ia $id $cmd\n" if $v; 
    9494                $terminals{$id} = new 
     
    101101            if ($error==1 or $ia==0) { # Failed to create a new terminal 
    102102            print " Failed to create a new terminal: <$output> err:$error ia:$ia\n" if $v; 
    103                 $sessions_per_ip{$ip}--; 
     103                $nsessions_per_ip{$ip}--; 
    104104                &killterm($id); 
    105105            } 
     
    215215          my $pid= $terminals{$id}->{pid}; 
    216216            my $ip=$terminals{$id}->{ip}; 
    217             $sessions_per_ip{$ip}--; 
     217            $nsessions_per_ip{$ip}--; 
    218218#             if ($pid) { 
    219219#                kill 9,$pid; 
  • misc/runpugs/lib/Web/Terminal/Server3.pm

    r14891 r14930  
    3333our %terminals        = (); 
    3434our %nsessions_per_ip = (); 
    35 our $session_counter  = 0; 
    36 our %sessions         = ();    # holds the session objects 
    37 our @sessions_stack     = 1 .. $Web::Terminal::Settings::nsessions; 
    38 our @sessions_stack_app = (); 
     35#our $session_counter  = 0; 
     36my %sessions         = ();    # holds the session objects 
     37my @sessions_stack     = 1 .. $Web::Terminal::Settings::nsessions; 
     38my @sessions_stack_app = (); 
    3939my $v = 1 - $Web::Terminal::Settings::daemon; 
    4040 
     
    6767                        #select LOG2; $|=1; # to switch of buffering 
    6868                        print "Parent: preload sessions ...\n " if $v; 
    69                         print @sessions_stack . join(','), "\n"; 
    70                         for my $i ( 1 .. $Web::Terminal::Settings::npreloaded_sessions ) { 
    71                                 for my $app ( 0 .. @Web::Terminal::Settings::commands - 1 ) { 
    72                                         $app == 0 && next; 
     69#                       print join(',',@sessions_stack), "\n" if $v; 
     70                        for my $app ( 0 .. @Web::Terminal::Settings::commands - 1 ) { 
     71                        for my $i ( 1 .. 
     72                $Web::Terminal::Settings::npreloaded_sessions[$app] ) { 
     73#                $sessions_stack_app[$app]=[]; 
     74#                                       $app == 0 && next; 
    7375                                        my $ret = &create_session($app); 
    74                                         print "OK? $ret\n"; 
     76                                        print "OK? if $v; 
     77                    $ret:",scalar(@{$sessions_stack_app[$app]}),';',$app,"\n"; 
    7578                                } 
    7679                        } 
     
    8487                        while ( getppid() > 10 ) {    # a bit ad-hoc. 
    8588                                sleep $Web::Terminal::Settings::check_interval; 
    86                                 print "Child: ", getppid(), "\n" if $v; 
     89#                               print "Child: ", getppid(), "\n" if $v; 
    8790                                kill 'USR1', getppid(); 
    8891                        } 
     92            die "No restarting, test phase\n"; 
    8993                        print "Restarting server\n" if $v; 
    9094                        chdir $Web::Terminal::Settings::cgi_path; 
     
    233237                                        &disconnect_from_session($id); 
    234238                                        $nsessions_per_ip{$ip}--; 
    235                                         $lines = $Web::Terminal::Settings::quit_message; 
     239                                        $lines = $Web::Terminal::Settings::quit_message."\n"; 
    236240                                } elsif ( $term->{error} == 1 ) { 
    237241                                        &kill_term($id) 
     
    258262                                $nsessions_per_ip{$ip}++; 
    259263                                print "$app $ia $id $cmd\n" if $v; 
    260  
     264                  if (($app!=0) && ($app!=1)) {$app=1}; 
    261265                                # then we should check if there is a free session for this $app 
    262266                                if ( @{ $sessions_stack_app[$app] } ) { 
     
    265269                                        my $term = $sessions{$counter}; 
    266270                                        # Every time a free session is taken, create a new session 
     271                    # if the number of free sessions is low 
     272                    if ( @{ $sessions_stack_app[$app] }<2) { 
    267273                                        # we use a SIGUSR2 to the child for this 
    268274                                        kill 'USR2', $pid or die $!; 
    269275                                        print "Initiated create_session() call, now returning\n" if $v; 
     276                    } 
    270277                                        return $term->{output}; 
    271278                                } else {    # if not, create one 
    272279                                        my $counter = &create_session($app); 
    273280                                        if ( $counter != -1 ) { 
     281                                        print "Created a new session $counter and connected to $id\n" if $v; 
    274282                                                my $counter = &connect_to_session( $app, $id, $ip ); 
    275283                                                my $term = $sessions{$counter}; 
     
    300308                        return $session_counter; 
    301309                } else { 
    302                         $session_counter--; 
     310            push  @sessions_stack, $session_counter; 
    303311                        return -1; 
    304312                } 
     
    356364 
    357365sub init_create { 
     366    sleep 3; 
    358367        print "Initiating a create_session() call...\n" if $v; 
    359368        use Web::Terminal::Dispatcher3; 
  • misc/runpugs/lib/Web/Terminal/Settings.pm

    r14891 r14930  
    5555our @commands=( 
    5656'/usr/bin/nice /home/andara/pugs-rel/pugs -I/home/andara/pugs-rel/blib6/lib', 
    57 '/usr/bin/pugs' #/usr/bin/nice  
     57'/usr/bin/nice /usr/bin/pugs' 
    5858); 
    5959#Dev 
     
    8282our $nsessions=50; 
    8383our $nsessions_ip=10; 
    84 our $npreloaded_sessions=3; 
     84our @npreloaded_sessions=(2,5); 
    8585 
    8686our $timeout_idle=600; # was 600 
  • misc/runpugs/lib/startup.pl

    r14885 r14930  
    1313 
    1414use Web::Terminal::Settings ( ); 
    15 use Web::Terminal::Dispatcher ( ); 
     15#use Web::Terminal::Dispatcher ( ); 
     16use Web::Terminal::Dispatcher3 ( ); 
    1617#use Web::Terminal::Msg ( ); 
    1718#use YAML::Syck ( ); 
  • misc/runpugs/perl/runpugs.pl

    r14885 r14930  
    140140    my $npromptw=HTML::Entities::encode_entities($nprompt); 
    141141#    my $replyw="$preply$prompt$prevcmd\n$reply"; 
     142#    if($reply=~/$Web::Terminal::Dispatcher::quit_message/) { 
     143#        $nprompt=''; 
     144#        } 
    142145    my $replyw="$preply\n$reply"; 
    143146    if($clear==1) {