diff --git a/src/actions.c b/src/actions.c index 0f014b1..6088f76 100644 --- a/src/actions.c +++ b/src/actions.c @@ -158,7 +158,7 @@ action_result action_execute(connection *con) { continue; } - con->srv->stats.actions_executed++; + con->wrk->stats.actions_executed++; switch (a->type) { case ACTION_TSETTING: diff --git a/src/connection.c b/src/connection.c index 9780fa7..ef0ac12 100644 --- a/src/connection.c +++ b/src/connection.c @@ -367,7 +367,7 @@ void connection_state_machine(connection *con) { } connection_set_state(con, CON_STATE_HANDLE_REQUEST_HEADER); request_validate_header(con); - con->srv->stats.requests++; + con->wrk->stats.requests++; break; case CON_STATE_HANDLE_REQUEST_HEADER: diff --git a/src/plugin_core.c b/src/plugin_core.c index 892bb98..b61d2d0 100644 --- a/src/plugin_core.c +++ b/src/plugin_core.c @@ -199,6 +199,7 @@ static action* core_static(server *srv, plugin* p, option *opt) { static action_result core_handle_test(connection *con, gpointer param) { server *srv = con->srv; + worker *wrk = con->wrk; /*GHashTableIter iter; gpointer k, v; GList *hv;*/ @@ -223,11 +224,11 @@ static action_result core_handle_test(connection *con, gpointer param) { uptime = (guint64)(ev_now(con->wrk->loop) - srv->started); if (uptime == 0) uptime = 1; - avg1 = srv->stats.actions_executed; + avg1 = wrk->stats.actions_executed; suffix1[0] = counter_format(&avg1, 1000); - avg2 = srv->stats.actions_executed / uptime; + avg2 = wrk->stats.actions_executed / uptime; suffix2[0] = counter_format(&avg2, 1000); - avg3 = srv->stats.actions_executed / srv->stats.requests; + avg3 = wrk->stats.actions_executed / wrk->stats.requests; suffix3[0] = counter_format(&avg3, 1000); str = g_string_sized_new(0); g_string_printf(str, @@ -236,9 +237,9 @@ static action_result core_handle_test(connection *con, gpointer param) { ); chunkqueue_append_string(con->out, str); chunkqueue_append_mem(con->out, CONST_STR_LEN("\r\nrequests: ")); - avg1 = srv->stats.requests; + avg1 = wrk->stats.requests; suffix1[0] = counter_format(&avg1, 1000); - avg2 = srv->stats.requests / uptime; + avg2 = wrk->stats.requests / uptime; suffix2[0] = counter_format(&avg2, 1000); str = g_string_sized_new(0); g_string_printf(str, "%"G_GUINT64_FORMAT"%s (%"G_GUINT64_FORMAT"%s/s)", avg1, suffix1, avg2, suffix2); diff --git a/src/server.h b/src/server.h index 056b67d..17eec89 100644 --- a/src/server.h +++ b/src/server.h @@ -77,7 +77,6 @@ struct server { } logs; ev_tstamp started; - statistics_t stats; /** TODO: sync/worker split */ /* keep alive timeout */ guint keep_alive_queue_timeout; diff --git a/src/worker.h b/src/worker.h index 93a965c..1e551d1 100644 --- a/src/worker.h +++ b/src/worker.h @@ -49,6 +49,8 @@ struct worker { /* - new connections (after accept) */ ev_async new_con_watcher; GAsyncQueue *new_con_queue; + + statistics_t stats; }; LI_API worker* worker_new(struct server *srv, struct ev_loop *loop);