PUBLIC char *httpStatsReport(int flags) { MprTime now; MprBuf *buf; HttpStats s; double elapsed; static MprTime lastTime; static HttpStats last; double mb; mb = 1024.0 * 1024; now = mprGetTime(); elapsed = (now - lastTime) / 1000.0; httpGetStats(&s); buf = mprCreateBuf(0, 0); mprPutToBuf(buf, "\nHttp Report: at %s\n\n", mprGetDate("%D %T")); if (flags & HTTP_STATS_MEMORY) { mprPutToBuf(buf, "Memory %8.1f MB, %5.1f%% max\n", s.mem / mb, s.mem / (double) s.memMax * 100.0); mprPutToBuf(buf, "Heap %8.1f MB, %5.1f%% mem\n", s.heap / mb, s.heap / (double) s.mem * 100.0); mprPutToBuf(buf, "Heap-peak %8.1f MB\n", s.heapPeak / mb); mprPutToBuf(buf, "Heap-used %8.1f MB, %5.1f%% used\n", s.heapUsed / mb, s.heapUsed / (double) s.heap * 100.0); mprPutToBuf(buf, "Heap-free %8.1f MB, %5.1f%% free\n", s.heapFree / mb, s.heapFree / (double) s.heap * 100.0); if (s.memMax == (size_t) -1) { mprPutToBuf(buf, "Heap limit -\n"); mprPutToBuf(buf, "Heap readline -\n"); } else { mprPutToBuf(buf, "Heap limit %8.1f MB\n", s.memMax / mb); mprPutToBuf(buf, "Heap redline %8.1f MB\n", s.memRedline / mb); } } mprPutToBuf(buf, "Connections %8.1f per/sec\n", (s.totalConnections - last.totalConnections) / elapsed); mprPutToBuf(buf, "Requests %8.1f per/sec\n", (s.totalRequests - last.totalRequests) / elapsed); mprPutToBuf(buf, "Sweeps %8.1f per/sec\n", (s.totalSweeps - last.totalSweeps) / elapsed); mprPutCharToBuf(buf, '\n'); mprPutToBuf(buf, "Clients %8d active\n", s.activeClients); mprPutToBuf(buf, "Connections %8d active\n", s.activeConnections); mprPutToBuf(buf, "Processes %8d active\n", s.activeProcesses); mprPutToBuf(buf, "Requests %8d active\n", s.activeRequests); mprPutToBuf(buf, "Sessions %8d active\n", s.activeSessions); mprPutToBuf(buf, "Workers %8d busy - %d yielded, %d idle, %d max\n", s.workersBusy, s.workersYielded, s.workersIdle, s.workersMax); mprPutToBuf(buf, "Sessions %8.1f MB\n", s.memSessions / mb); mprPutCharToBuf(buf, '\n'); last = s; lastTime = now; mprAddNullToBuf(buf); return sclone(mprGetBufStart(buf)); }
int maStartAppweb(MaAppweb *appweb) { MaServer *server; char *timeText; int next; for (next = 0; (server = mprGetNextItem(appweb->servers, &next)) != 0; ) { if (maStartServer(server) < 0) { return MPR_ERR_CANT_INITIALIZE; } } timeText = mprGetDate(0); mprLog(1, "HTTP services Started at %s with max %d threads", timeText, mprGetMaxWorkers(appweb)); return 0; }
static void timestamp() { mprLog("info http", 0, "Time: %s", mprGetDate(NULL)); }