Annotate

mod_measure_conn_buffers/mod_measure_conn_buffers.lua @ 6142:fc521fb5ffa0

mod_report_forward: Measure number of forwarded reports
author Kim Alvefur <zash@zash.se>
date Wed, 08 Jan 2025 09:21:25 +0100 (2 months ago)
parent 6050:81805f11263c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6050
81805f11263c mod_measure_conn_buffers: Global module, buffers are not per host
Matthew Wild <mwild1@gmail.com>
parents: 6049
diff changeset
1 module:set_global();
81805f11263c mod_measure_conn_buffers: Global module, buffers are not per host
Matthew Wild <mwild1@gmail.com>
parents: 6049
diff changeset
2
6049
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local measure_total_pending_tx = module:measure("total_pending_tx", "amount");
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 local server = require "net.server";
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 if server.get_backend() ~= "epoll" or not server.loop.fds then
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 module:log_status("error", "This module is not compatible with your network_backend, only epoll is supported");
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 return;
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 end
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 local fds = server.loop.fds;
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 module:hook("stats-update", function ()
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local pending_tx = 0;
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 for _, conn in pairs(fds) do
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 local buffer = conn.writebuffer;
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 if buffer then
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 if type(buffer) == "string" then
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 pending_tx = pending_tx + #buffer;
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 elseif buffer._length then -- dbuffer
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 pending_tx = pending_tx + buffer._length;
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 else -- simple table
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 for i = 1, #buffer do
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 pending_tx = pending_tx + #buffer[i];
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 measure_total_pending_tx(pending_tx);
491c56449a76 mod_measure_conn_buffers: Measure total size of connection write buffers
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 end);