Commit 94ffa86b authored by Frank Bergmann's avatar Frank Bergmann

This commit was generated by cvs2svn to track changes on a CVS vendor

branch.
parents 25f71f63 29c2d706
...@@ -266,7 +266,7 @@ ...@@ -266,7 +266,7 @@
Throttle instproc add_url_stat {url time_used key pa content_type} { Throttle instproc add_url_stat {url time_used key pa content_type} {
catch {my unset running_url($key,$url)} catch {my unset running_url($key,$url)}
#my log "### unset running_url($key,$url) $errmsg" #my log "### unset running_url($key,$url) $errmsg"
if {[string match text/html* $content_type]} { if {[string match "text/html*" $content_type]} {
[Users current_object] add_view $key [Users current_object] add_view $key
} }
response_time_minutes add_url_stat $url $time_used $key response_time_minutes add_url_stat $url $time_used $key
...@@ -563,6 +563,7 @@ ...@@ -563,6 +563,7 @@
@author Gustaf Neumann @author Gustaf Neumann
@cvs-id $Id$ @cvs-id $Id$
} }
Users ad_proc active {-full:switch} { Users ad_proc active {-full:switch} {
Return a list of lists containing information about current Return a list of lists containing information about current
users. If the switch 'full' is used this list contains users. If the switch 'full' is used this list contains
...@@ -614,7 +615,11 @@ ...@@ -614,7 +615,11 @@
} }
return [list $ip $auth] return [list $ip $auth]
} }
Users ad_proc user_is_active {uid} {
@return boolean value whether user is active
} {
my exists pa($uid)
}
Users ad_proc hits {uid} { Users ad_proc hits {uid} {
@param uid request key @param uid request key
...@@ -1155,6 +1160,7 @@ throttle forward max_values %self do %1 set stats ...@@ -1155,6 +1160,7 @@ throttle forward max_values %self do %1 set stats
throttle forward purge_access_stats %self do Users %proc throttle forward purge_access_stats %self do Users %proc
throttle forward users %self do Users throttle forward users %self do Users
throttle forward views_per_minute %self do Users %proc throttle forward views_per_minute %self do Users %proc
throttle forward user_is_active %self do Users %proc
#### ####
# the next procs are for the filters (registered from the -init file) # the next procs are for the filters (registered from the -init file)
......
...@@ -42,6 +42,9 @@ proc currentSystemLoad {} { ...@@ -42,6 +42,9 @@ proc currentSystemLoad {} {
set f [open $procloadavg]; set c [read $f]; close $f set f [open $procloadavg]; set c [read $f]; close $f
return $c return $c
} }
if {![catch {exec sysctl vm.loadavg kern.boottime} result]} {
return $result
}
return [exec /usr/bin/uptime] return [exec /usr/bin/uptime]
} }
...@@ -55,19 +58,19 @@ proc currentResponseTime {} { ...@@ -55,19 +58,19 @@ proc currentResponseTime {} {
} }
set avg_half_hour [avg_last_n $tm 30 cnt] set avg_half_hour [avg_last_n $tm 30 cnt]
if {$cnt > 0} { if {$cnt > 0} {
set minstat "[format %4.2f $avg_half_hour] (last $cnt minutes), " set minstat "[format %4.3f $avg_half_hour] (last $cnt minutes), "
} else { } else {
set minstat "" set minstat ""
} }
if {[llength $tm]>0} { if {[llength $tm]>0} {
set lminstat "[format %4.2f [expr {[lindex $tm end]/1000.0}]] (last minute), " set lminstat "[format %4.3f [expr {[lindex $tm end]/1000.0}]] (last minute), "
} else { } else {
set lminstat "" set lminstat ""
} }
if {[llength $hours]>0} { if {[llength $hours]>0} {
set avg_last_day [avg_last_n $hours 24 cnt] set avg_last_day [avg_last_n $hours 24 cnt]
set hourstat "[format %4.2f [expr {[lindex $hours end]/1000.0}]] (last hour), " set hourstat "[format %4.3f [expr {[lindex $hours end]/1000.0}]] (last hour), "
append hourstat "[format %4.2f $avg_last_day] (last $cnt hours)" append hourstat "[format %4.3f $avg_last_day] (last $cnt hours)"
set server_running "$cnt hours" set server_running "$cnt hours"
} else { } else {
if {[llength $tm]>0} { if {[llength $tm]>0} {
...@@ -93,7 +96,7 @@ proc currentViews {} { ...@@ -93,7 +96,7 @@ proc currentViews {} {
set views_per_min_per_user [expr {60.0*$views_per_sec/[lindex $um end]}] set views_per_min_per_user [expr {60.0*$views_per_sec/[lindex $um end]}]
set view_time [expr {$views_per_min_per_user>0 ? set view_time [expr {$views_per_min_per_user>0 ?
" avg. view time: [format %4.1f [expr {60.0/$views_per_min_per_user}]]" : ""}] " avg. view time: [format %4.1f [expr {60.0/$views_per_min_per_user}]]" : ""}]
return "[format %4.1f $views_per_sec] views/sec, [format %4.2f $views_per_min_per_user] views/min/user, $view_time" return "[format %4.1f $views_per_sec] views/sec, [format %4.3f $views_per_min_per_user] views/min/user, $view_time"
} }
...@@ -255,6 +258,11 @@ if {![catch {ns_conn contentsentlength}]} { ...@@ -255,6 +258,11 @@ if {![catch {ns_conn contentsentlength}]} {
set background [expr {[llength $background_requests]/2}] set background [expr {[llength $background_requests]/2}]
append running /$background append running /$background
} }
if {[ns_info name] eq "NaviServer"} {
# add info from background writer
append running /[llength [ns_writer list]]
}
array set thread_avgs [throttle thread_avgs] array set thread_avgs [throttle thread_avgs]
if {[info command ::tlf::system_activity] ne ""} { if {[info command ::tlf::system_activity] ne ""} {
......
...@@ -26,7 +26,13 @@ if {[info command bgdelivery] ne ""} { ...@@ -26,7 +26,13 @@ if {[info command bgdelivery] ne ""} {
} }
set nr_bg [expr {[llength $background_requests]/2}] set nr_bg [expr {[llength $background_requests]/2}]
set nr_req [expr {[llength $running_requests]/2}] set nr_req [expr {[llength $running_requests]/2}]
set title "Currently Running Requests ($nr_req/$nr_bg)" set counts $nr_req/$nr_bg
if {[ns_info name] eq "NaviServer"} {
set writer_requests [ns_writer list]
append counts /[llength $writer_requests]
}
set title "Currently Running Requests ($counts)"
set context [list "Running Requests"] set context [list "Running Requests"]
TableWidget create t1 -volatile \ TableWidget create t1 -volatile \
...@@ -38,12 +44,13 @@ TableWidget create t1 -volatile \ ...@@ -38,12 +44,13 @@ TableWidget create t1 -volatile \
Field url -label "Url" Field url -label "Url"
Field elapsed -label "Elapsed Time" -html { align right } Field elapsed -label "Elapsed Time" -html { align right }
Field background -label "Background" Field background -label "Background"
Field progress -label "Progress"
} \ } \
-no_data "Currently no running requests" -no_data "Currently no running requests"
set sortable_requests [list] set sortable_requests [list]
foreach {key elapsed} $running_requests { foreach {key elapsed} $running_requests {
foreach {requestor url} [split $key ,] break lassign [split $key ,] requestor url
set ms [format %.2f [expr {[throttle ms -start_time $elapsed]/1000.0}]] set ms [format %.2f [expr {[throttle ms -start_time $elapsed]/1000.0}]]
if {[string is integer $requestor]} { if {[string is integer $requestor]} {
acs_user::get -user_id $requestor -array user acs_user::get -user_id $requestor -array user
...@@ -55,9 +62,9 @@ foreach {key elapsed} $running_requests { ...@@ -55,9 +62,9 @@ foreach {key elapsed} $running_requests {
lappend sortable_requests [list $user_string $user_url $url $ms ""] lappend sortable_requests [list $user_string $user_url $url $ms ""]
} }
foreach {index entry} $background_requests { foreach {index entry} $background_requests {
foreach {key elapsed} $entry break lassign $entry key elapsed
foreach {requestor url} [split $key ,] break lassign [split $key ,] requestor url
set ms [format %.2f [expr {[throttle ms -start_time $elapsed]/1000.0}]] set ms [format %.2f [expr {[throttle ms -start_time $elapsed]/-1000.0}]]
if {[string is integer $requestor]} { if {[string is integer $requestor]} {
acs_user::get -user_id $requestor -array user acs_user::get -user_id $requestor -array user
set user_string "$user(first_names) $user(last_name)" set user_string "$user(first_names) $user(last_name)"
...@@ -65,15 +72,34 @@ foreach {index entry} $background_requests { ...@@ -65,15 +72,34 @@ foreach {index entry} $background_requests {
set user_string $requestor set user_string $requestor
} }
set user_url "last-requests?request_key=$requestor" set user_url "last-requests?request_key=$requestor"
lappend sortable_requests [list $user_string $user_url $url -$ms "background"] lappend sortable_requests [list $user_string $user_url $url $ms "::bgdelivery"]
}
if {[ns_info name] eq "NaviServer"} {
foreach {entry} $writer_requests {
if {[llength $entry] != 8} continue
lassign $entry starttime thread driver ip fd remaining done clientdata
lassign $clientdata requestor url
set size [expr {$remaining+$done}]
set percentage [expr {$done*100.0/$size}]
set progress [format {%5.2f%% of %5.2f MB} $percentage [expr {$size/1000000.0}]]
set ms [format %.2f [expr {([clock milliseconds] - $starttime*1000)/-1000.0}]]
if {[string is integer $requestor]} {
acs_user::get -user_id $requestor -array user
set user_string "$user(first_names) $user(last_name)"
} else {
set user_string $requestor
}
set user_url "last-requests?request_key=$requestor"
lappend sortable_requests [list $user_string $user_url $url $ms $thread $progress]
}
} }
foreach r [lsort -decreasing -real -index 3 $sortable_requests] { foreach r [lsort -decreasing -real -index 3 $sortable_requests] {
foreach {user_string user_url url ms mode} $r break lassign $r user_string user_url url ms mode progress
if {$ms<0} {set ms [expr {-1*$ms}]} if {$ms<0} {set ms [expr {-1*$ms}]}
t1 add \ t1 add \
-user $user_string -user.href $user_url \ -user $user_string -user.href $user_url \
-url $url -elapsed $ms -background $mode -url $url -elapsed $ms -background $mode -progress $progress
} }
set t1 [t1 asHTML] set t1 [t1 asHTML]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment