xo::pool_remap_watchdog (private)
xo::pool_remap_watchdog [ -maxWaiting maxWaiting ] \ [ -maxRunning maxRunning ]
Defined in packages/xotcl-request-monitor/tcl/throttle_mod-procs.tcl
Watchdoc function to ensure liveliness of the server. This watchdog checks every minute the running jobs and maps very slow requests to the slow pool (if configured) to avoid that the default pool is getting filled up with more stuck requests. The watchdog is managed via an ad_schedule_proc started from the init-procs.
- Switches:
- -maxWaiting (optional, defaults to
"10"
)- -maxRunning (optional, defaults to
"100"
)- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: foreach s [ns_info servers] { # # Check default connection pool and remap slow request to the # "slow" pool when defined. # set reqs [ns_server -server $s -pool "" active] foreach req $reqs { set runtime [lindex $req end-1] if {$runtime >= 3.0} { set method [lindex $req 3] set url [lindex $req 4] ns_log notice "CALL TRY REMAP ::xo::remap_pool -runtime $runtime $method $url" ::xo::remap_pool -runtime $runtime $method $url } } # # Check queueing situation for every connection pool and report # to sysadmin when things pile up. # set message "" foreach pool [ns_server -server $s pools] { set reqs [ns_server -server $s -pool $pool active] set waiting [ns_server -server $s -pool $pool waiting] set running [llength $reqs] if {$waiting >= $maxWaiting || $running >= $maxRunning} { set threadInfo [ns_server -server $s -pool $pool threads] lappend threadInfo waiting $waiting set poolName [expr {$pool eq "" ? "default" : "'$pool'"}] set message "" append message "Server '$s' on [ad_system_name]: " "more than $maxWaiting requests are waiting " "in connection pool $poolName ($threadInfo)" \n "Currently running requests:" \n " " [join $reqs "\n "] \n } } if {$message ne ""} { ns_log warning $message try { # # Try to send a mail to the webmaster and include a link to # the recommended nsstats location. # acs_mail_lite::send -send_immediately -to_addr [ad_host_administrator] -from_addr [ad_system_owner] -subject "High load warning on [ad_system_name]" -body "$message\nVisit: [ad_url]/admin/nsstats/admin/nsstats" } on error {errorMsg} { ns_log error "Could not send high-load warning: $errorMsg" } } }XQL Not present: Generic, PostgreSQL, Oracle