Software /
code /
prosody-modules
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 |
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); |