mirror of
https://github.com/c-cube/nanoev.git
synced 2025-12-06 03:05:32 -05:00
echo: emit metrics, allow user to set buf size/buf pool size
This commit is contained in:
parent
bd983a395c
commit
fcaa4b6636
1 changed files with 23 additions and 2 deletions
|
|
@ -79,7 +79,16 @@ let setup_logging () =
|
||||||
Logs.set_reporter @@ Logs.format_reporter ();
|
Logs.set_reporter @@ Logs.format_reporter ();
|
||||||
Logs.set_level ~all:true (Some Logs.Debug)
|
Logs.set_level ~all:true (Some Logs.Debug)
|
||||||
|
|
||||||
|
let emit_metrics_ pool server () =
|
||||||
|
while true do
|
||||||
|
Trace.counter_int ~level:Info "pool.tasks" (Moonpool.Runner.num_tasks pool);
|
||||||
|
Trace.counter_int ~level:Info "http.active-conns"
|
||||||
|
(Server.active_connections server);
|
||||||
|
Thread.delay 0.3
|
||||||
|
done
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
|
Trace.set_current_level Info;
|
||||||
let@ () = Trace_tef.with_setup () in
|
let@ () = Trace_tef.with_setup () in
|
||||||
Trace.set_thread_name "main";
|
Trace.set_thread_name "main";
|
||||||
|
|
||||||
|
|
@ -87,6 +96,8 @@ let () =
|
||||||
let max_conn = ref 1024 in
|
let max_conn = ref 1024 in
|
||||||
let j = ref 8 in
|
let j = ref 8 in
|
||||||
let backend = ref `Posix in
|
let backend = ref `Posix in
|
||||||
|
let buf_size = ref 4096 in
|
||||||
|
let max_buf_pool_size = ref None in
|
||||||
|
|
||||||
let set_backend = function
|
let set_backend = function
|
||||||
| "posix" | "poll" | "default" -> backend := `Posix
|
| "posix" | "poll" | "default" -> backend := `Posix
|
||||||
|
|
@ -99,6 +110,10 @@ let () =
|
||||||
"--port", Arg.Set_int port_, " set port";
|
"--port", Arg.Set_int port_, " set port";
|
||||||
"-p", Arg.Set_int port_, " set port";
|
"-p", Arg.Set_int port_, " set port";
|
||||||
"-j", Arg.Set_int j, " number of threads";
|
"-j", Arg.Set_int j, " number of threads";
|
||||||
|
( "--max-buf-pool-size",
|
||||||
|
Arg.Int (fun i -> max_buf_pool_size := Some i),
|
||||||
|
" max buffer pool size" );
|
||||||
|
"--buf-size", Arg.Set_int buf_size, " buffer size";
|
||||||
"--debug", Arg.Unit setup_logging, " enable debug";
|
"--debug", Arg.Unit setup_logging, " enable debug";
|
||||||
"--max-conns", Arg.Set_int max_conn, " maximum concurrent connections";
|
"--max-conns", Arg.Set_int max_conn, " maximum concurrent connections";
|
||||||
( "--backend",
|
( "--backend",
|
||||||
|
|
@ -128,6 +143,7 @@ let () =
|
||||||
|
|
||||||
let server =
|
let server =
|
||||||
Nanoev_tiny_httpd.create ~new_thread:(Moonpool.run_async pool) ~port:!port_
|
Nanoev_tiny_httpd.create ~new_thread:(Moonpool.run_async pool) ~port:!port_
|
||||||
|
?max_buf_pool_size:!max_buf_pool_size ~buf_size:!buf_size
|
||||||
~max_connections:!max_conn ()
|
~max_connections:!max_conn ()
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
@ -296,8 +312,13 @@ let () =
|
||||||
Response.make_string ~headers:[ "content-type", "text/html" ] @@ Ok s);
|
Response.make_string ~headers:[ "content-type", "text/html" ] @@ Ok s);
|
||||||
|
|
||||||
Printf.printf
|
Printf.printf
|
||||||
"listening on http://%s:%d with %d threads, %d max connections\n%!"
|
"listening on http://%s:%d with %d threads, %d max connections, %d max fds\n\
|
||||||
(Server.addr server) (Server.port server) !j !max_conn;
|
%!"
|
||||||
|
(Server.addr server) (Server.port server) !j !max_conn (Nanoev.max_fds ev);
|
||||||
|
|
||||||
|
if Trace.enabled () then
|
||||||
|
ignore (Thread.create (emit_metrics_ pool server) () : Thread.t);
|
||||||
|
|
||||||
match Server.run server with
|
match Server.run server with
|
||||||
| Ok () -> ()
|
| Ok () -> ()
|
||||||
| Error e -> raise e
|
| Error e -> raise e
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue