@@ -81,24 +81,34 @@ def run(stats, freq, node, f):
8181 result ['node' ] = node
8282 result ['req' ] = sum ([w ['requests' ] for w in workers ])
8383
84+ _sum_avg = _sum_rss = _sum_vsz = 0
85+
8486 dt = time .time () - last_ts
8587 for w in workers :
88+ # calculate rps
8689 w ['rps' ] = int (round ((w ['requests' ] - last_req [w ['id' ]]) / dt ))
8790 last_req [w ['id' ]] = w ['requests' ]
91+ # sum to-be-averaged metrics
92+ _sum_avg += w ['avg_rt' ]
93+ _sum_rss += w ['rss' ]
94+ _sum_vsz += w ['vsz' ]
8895 last_ts = time .time ()
8996
9097 # after reloading, rps maybe a negative number, set it to 0
9198 result ['rps' ] = max (0 if first else sum ([w ['rps' ] for w in workers ]), 0 )
9299 first = False
93100
94- result ['avg' ] = round (sum ([ w [ 'avg_rt' ] for w in workers ]) / float (len (workers )) / 1000.0 )
101+ result ['avg' ] = round (_sum_avg / float (len (workers )) / 1000.0 )
95102 result ['lq' ] = int (dd .get ('listen_queue' , 0 ))
96103 result ['tx' ] = sum ([w ['tx' ] for w in workers ])
97104
98105 _status = [w ['status' ] for w in workers ]
99106 result ['busy' ] = _status .count ('busy' )
100107 result ['idle' ] = len (_status ) - result ['busy' ]
101108
109+ result ['rss' ] = int (_sum_rss / float (len (workers )))
110+ result ['vsz' ] = int (_sum_vsz / float (len (workers )))
111+
102112 sys .stdout .write (f .strip ().format (** result ))
103113 sys .stdout .write ('\n ' )
104114 sys .stdout .flush ()
@@ -107,7 +117,7 @@ def run(stats, freq, node, f):
107117
108118
109119def main ():
110- default_format = 'uwsgi,node={node} req={req}i,rps={rps}i,avg={avg},lq={lq}i,tx={tx }i,busy={busy }i,idle={idle }i'
120+ default_format = 'uwsgi,node={node} req={req}i,rps={rps}i,avg={avg},lq={lq}i,busy={busy }i,idle={idle }i,rss={rss }i'
111121
112122 parser = argparse .ArgumentParser (formatter_class = argparse .RawTextHelpFormatter )
113123 parser .add_argument ('--node' , '-n' , dest = 'node' , default = socket .gethostname (), help = 'uWSGI node name, current hostname by default' )
@@ -120,9 +130,10 @@ def main():
120130 rps - requests per second
121131 avg - average response time
122132 lq - listen queue
123- tx - traffic
124133 busy - busy workers count
125134 idle - idle workers count
135+ rss - average RSS (Resident Set Size)
136+ vsz - average VSZ (Virtual Memory Size)
126137
127138e.g. "{}"''' .format (default_format ))
128139
0 commit comments