costin 02/05/15 12:42:56 Modified: jk/native2/common jk_worker_status.c Log: Display the stat info and totals. Revision Changes Path 1.21 +71 -12 jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c Index: jk_worker_status.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- jk_worker_status.c 14 May 2002 20:42:14 -0000 1.20 +++ jk_worker_status.c 15 May 2002 19:42:56 -0000 1.21 @@ -75,24 +75,27 @@ #include "jk_registry.h" #include "jk_endpoint.h" + static void jk2_worker_status_displayScoreboardInfo(jk_env_t *env, jk_ws_service_t *s, jk_workerEnv_t *wenv) { jk_map_t *map=wenv->initData; int i; int j; + int totalReq=0; + int totalErr=0; + long totalTime=0; + long maxTime=0; int needHeader=JK_TRUE; if( wenv->shm==NULL || wenv->shm->head==NULL) return; - s->jkprintf(env, s, "<h2>Scoreboard info</h2>\n"); - + s->jkprintf(env, s, "<h2>Scoreboard info (ver=%d slots=%d)</h2>\n", + wenv->shm->head->lbVer, wenv->shm->head->lastSlot ); + s->jkprintf(env, s, "<table border>\n"); - s->jkprintf(env, s, "<tr><td>Version</td><td>%d</td></tr>\n", wenv->shm->head->lbVer ); - s->jkprintf(env, s, "<tr><td>Slots</td><td>%d</td></tr>\n", wenv->shm->head->lastSlot ); - for( i=1; i < wenv->shm->head->lastSlot; i++ ) { jk_shm_slot_t *slot= wenv->shm->getSlot( env, wenv->shm, i ); @@ -102,21 +105,77 @@ /* This is an endpoint slot */ void *data=slot->data; - s->jkprintf(env, s, "<tr><th colspan='2'>%s</th></tr>\n", slot->name ); - s->jkprintf(env, s, "<tr><td>StructCnt</td><td>%d</td>\n", slot->structCnt ); - s->jkprintf(env, s, "<tr><td>StructSize</td><td>%d</td>\n", slot->structSize ); - s->jkprintf(env, s, "<tr><th>Requests</th><th>Errors</th>\n" ); + s->jkprintf(env, s, "<tr><th colspan='4'>%s</th>\n", slot->name ); + s->jkprintf(env, s, "<th>Cnt=%d</th><th>size=%d</th>\n", + slot->structCnt, slot->structSize ); + + s->jkprintf(env, s, "<tr><th>Req</th><th>Err</th>"); + s->jkprintf(env, s,"<th>LastReq</th>\n" ); + +#ifdef HAVE_APR + s->jkprintf(env, s, "<th>ConnectionTime</th><th>TotalTime</th><th>MaxTime</th><th>AvgTime</th>" ); + s->jkprintf(env, s, "<th>ReqStart</th><th>+jk</th><th>+end</th>" ); +#endif /* XXX Add info about number of slots */ for( j=0; j<slot->structCnt ; j++ ) { jk_stat_t *stat=(jk_stat_t *) ( data + j * sizeof( jk_stat_t )); - s->jkprintf(env, s, "<tr><td>%d</td><td>%d</td></tr>\n", stat->reqCnt, stat->errCnt ); + s->jkprintf(env, s, "<tr><td>%d</td><td>%d</td>\n", stat->reqCnt, stat->errCnt ); + s->jkprintf(env, s, "<td>%s</td>\n", stat->active ); + + totalReq+=stat->reqCnt; + totalErr+=stat->errCnt; +#ifdef HAVE_APR + { + char ctimeBuf[APR_CTIME_LEN]; + apr_ctime( ctimeBuf, stat->connectedTime ); + s->jkprintf(env, s, "<td>%s</td>\n", ctimeBuf ); + + s->jkprintf(env, s, "<td>%ld</td>\n", stat->totalTime ); + s->jkprintf(env, s, "<td>%ld</td>\n", stat->maxTime ); + + if( stat->reqCnt + stat->errCnt > 0 ) + s->jkprintf(env, s, "<td>%ld</td>\n", + (stat->totalTime / ( stat->reqCnt + stat->errCnt )) ); + else + s->jkprintf(env, s, "<td>-</td>\n"); + + s->jkprintf(env, s, "<td>%ld</td>\n", stat->startTime ); + s->jkprintf(env, s, "<td>%ld</td>\n", + stat->jkStartTime - stat->startTime ); + s->jkprintf(env, s, "<td>%ld</td>\n", + stat->endTime - stat->startTime ); + + totalTime += stat->totalTime; + if( maxTime < stat->maxTime ) + maxTime=stat->maxTime; + } +#endif + s->jkprintf(env, s, "</tr>\n"); } } } s->jkprintf(env, s, "</table>\n"); + + s->jkprintf(env, s, "Totals:\n"); + + s->jkprintf(env, s, "<table border><tr><th>Req</th><th>Err</th><th>Max</th><th>Avg</th></tr>"); + + s->jkprintf(env, s, "<tr><td>%d</td>\n", totalReq ); + s->jkprintf(env, s, "<td>%d</td>\n", totalErr ); + + s->jkprintf(env, s, "<td>%ld</td>\n", maxTime ); + + if( totalErr + totalReq > 0 ) { + long avg=totalTime / ( totalReq + totalErr ); + s->jkprintf(env, s, "<td>%ld</td>\n", avg ); + } else { + s->jkprintf(env, s, "<td>-</td>\n" ); + } + + s->jkprintf(env, s, "</tr></table>\n"); } /** Use 'introspection' data to find what getters an type support, @@ -285,9 +344,9 @@ /* Body */ jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "ajp13" ); - jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "endpoint" ); - jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "uri" ); jk2_worker_status_displayScoreboardInfo(env, s, s->workerEnv ); +/* jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "endpoint" ); */ + jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "uri" ); jk2_worker_status_displayConfigProperties(env, s, s->workerEnv ); jk2_worker_status_displayActiveProperties(env, s, s->workerEnv );
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>