", r);
- else
- ap_rputs("Scoreboard: ", r);
-
- for (i = 0; i < server_limit; ++i) {
- for (j = 0; j < thread_limit; ++j) {
- int indx = (i * thread_limit) + j;
- ap_rputc(stat_buffer[indx], r);
- if ((indx % STATUS_MAXLINE == (STATUS_MAXLINE - 1))
- && !short_report)
- ap_rputs("\n", r);
- }
- }
-
- if (short_report)
- ap_rputs("\n", r);
- else {
- ap_rputs("\n", r);
- ap_rputs("Scoreboard Key:
\n", r);
- ap_rputs("\"_\" Waiting for Connection, \n", r);
- ap_rputs("\"S\" Starting up, \n", r);
- ap_rputs("\"R\" Reading Request,
\n", r);
- ap_rputs("\"W\" Sending Reply, \n", r);
- ap_rputs("\"K\" Keepalive (read), \n", r);
- ap_rputs("\"D\" DNS Lookup,
\n", r);
- ap_rputs("\"C\" Closing connection, \n", r);
- ap_rputs("\"L\" Logging, \n", r);
- ap_rputs("\"G\" Gracefully finishing,
\n", r);
- ap_rputs("\"I\" Idle cleanup of worker, \n", r);
- ap_rputs("\".\" Open slot with no current process
\n", r);
- for (i = 0; i < server_limit; ++i) {
- for (j = 0; j < thread_limit; ++j) {
- int indx = (i * thread_limit) + j;
-
- if (stat_buffer[indx] != '.') {
- ap_rprintf(r, " %" APR_PID_T_FMT
- " in state: %c ", pid_buffer[i],
- stat_buffer[indx]);
-
- if (++k >= 3) {
- ap_rputs("\n", r);
- k = 0;
- } else
- ap_rputs(",", r);
- }
- }
- }
-
- ap_rputs("\n", r);
- ap_rputs("\n", r);
- }
- }
-
- if (ap_extended_status && !short_report) {
- if (no_table_report)
- ap_rputs("| Srv | PID | Acc | " - "M | " -#ifdef HAVE_TIMES - "CPU\n | " -#endif - "SS | Req | " - "Conn | Child | Slot | " - "Client | VHost | " - "Request | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| %d-%d | - | %d/%lu/%lu", - i, (int)worker_generation, - (int)conn_lres, my_lres, lres); - else - ap_rprintf(r, - " | |||||||||||||||||||||
| %d-%d | %" - APR_PID_T_FMT - " | %d/%lu/%lu", - i, (int)worker_generation, - worker_pid, - (int)conn_lres, - my_lres, lres); - - switch (ws_record->status) { - case SERVER_READY: - ap_rputs(" | _", r); - break; - case SERVER_STARTING: - ap_rputs(" | S", r); - break; - case SERVER_BUSY_READ: - ap_rputs(" | R", r); - break; - case SERVER_BUSY_WRITE: - ap_rputs(" | W", r); - break; - case SERVER_BUSY_KEEPALIVE: - ap_rputs(" | K", r); - break; - case SERVER_BUSY_LOG: - ap_rputs(" | L", r); - break; - case SERVER_BUSY_DNS: - ap_rputs(" | D", r); - break; - case SERVER_CLOSING: - ap_rputs(" | C", r); - break; - case SERVER_DEAD: - ap_rputs(" | .", r); - break; - case SERVER_GRACEFUL: - ap_rputs(" | G", r); - break; - case SERVER_IDLE_KILL: - ap_rputs(" | I", r); - break; - default: - ap_rputs(" | ?", r); - break; - } - - ap_rprintf(r, - "\n | " -#ifdef HAVE_TIMES - "%.2f | " -#endif - "%ld | %ld", -#ifdef HAVE_TIMES - (ws_record->times.tms_utime + - ws_record->times.tms_stime + - ws_record->times.tms_cutime + - ws_record->times.tms_cstime) / tick, -#endif - (long)apr_time_sec(nowtime - - ws_record->last_used), - (long)req_time); - - ap_rprintf(r, " | %-1.1f | %-2.2f | %-2.2f\n", - (float)conn_bytes / KBYTE, (float) my_bytes / MBYTE, - (float)bytes / MBYTE); - - if (ws_record->status == SERVER_BUSY_READ) - ap_rprintf(r, - " | ? | ? | ..reading.. | %s | %s | %s | \n\n", - ap_escape_html(r->pool, - ws_record->client), - ap_escape_html(r->pool, - ws_record->vhost), - ap_escape_html(r->pool, - ap_escape_logitem(r->pool, - ws_record->request))); - } /* no_table_report */ - } /* for (j...) */ - } /* for (i...) */ - - if (!no_table_report) { - ap_rputs("
| Srv | Child Server number - generation |
|---|---|
| PID | OS process ID |
| Acc | Number of accesses this connection / this child / this slot |
| M | Mode of operation |
| CPU | CPU usage, number of seconds |
| SS | Seconds since beginning of most recent request |
| Req | Milliseconds required to process most recent request |
| Conn | Kilobytes transferred this connection |
| Child | Megabytes transferred this child |
| Slot | Total megabytes transferred this slot |
ExtendedStatus On directive.\n", r);
- }
- }
-
- {
- /* Run extension hooks to insert extra content. */
- int flags =
- (short_report ? AP_STATUS_SHORT : 0) |
- (no_table_report ? AP_STATUS_NOTABLE : 0) |
- (ap_extended_status ? AP_STATUS_EXTENDED : 0);
-
- ap_run_status_hook(r, flags);
- }
-
- if (!short_report) {
- ap_rputs(ap_psignature("| Environment | Pss | " + "
|---|
| ID | Environment | " + "Active | Idle | Max | " "Connections | Requests | Dropped (503) | " "Avail |
|---|---|---|---|---|---|---|---|---|
| %s | %d/%d/%d | " + ap_rprintf(r, "|||||||
| %d | %s | %d | %d | %d | " "%d | %d | %d | %d%% |
| Pss | Number of processors active/idle/max |
|---|
| ID | PID | STATUS | SB STATUS | " - "Type | Processor | Pss | AVAIL | " + "Type | Processor | Active | Idle | Max | " + "AVAIL | " +#ifdef PERUSER_MAX_CPU_USAGE + "CPU Stopped | MaxCPUUsage | CPU Usage | CPU Total | " +#endif "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| %3d | %5d | %8s | %8s | " - "%12s | %48s | %d/%d/%d | " - "%3d%% | %12s | %48s | %d | %d | %d | " + "%3d%% | " +#ifdef PERUSER_MAX_CPU_USAGE + "%d | %d.0%% | %.1f%% | %.1f%% | " +#endif + "\n", child->id, child->pid, child_status_string(child->status), scoreboard_status_string(SCOREBOARD_STATUS(x)), child_type_string(child->type), senv == NULL ? NULL : (senv->name == NULL ? "" : senv->name), - active_processors(x), - idle_processors(x), + senv == NULL ? 0 : senv->active_processors, + senv == NULL ? 0 : senv->idle_processors, senv == NULL ? 0 : senv->max_processors, - senv == NULL ? 0 : senv->availability); + senv == NULL ? 0 : senv->availability +#ifdef PERUSER_MAX_CPU_USAGE + ,child->cpu_stopped, + child->senv->max_cpu_usage, + child->cpu_usage, + child->senv->total_cpu_usage +#endif + ); } - ap_rputs("
| STATUS | Processor status |
|---|---|
| Pss | Number of processors active/idle/max |