From 10913fa9daa117822e5dac21c556d7df65e0ddfd Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Thu, 18 Apr 2019 09:32:56 +0100 Subject: [PATCH] Add request method stats --- electrumx/server/session.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/electrumx/server/session.py b/electrumx/server/session.py index edae574..76ab981 100644 --- a/electrumx/server/session.py +++ b/electrumx/server/session.py @@ -17,6 +17,7 @@ import os import pylru import ssl import time +from collections import defaultdict from functools import partial from ipaddress import ip_address @@ -117,6 +118,7 @@ class SessionManager(object): self.session_groups = {} # group name->SessionGroup instance self.txs_sent = 0 self.start_time = time.time() + self._method_counts = defaultdict(int) self._history_cache = pylru.lrucache(1000) self._history_lookups = 0 self._history_hits = 0 @@ -299,19 +301,21 @@ class SessionManager(object): 'db_height': self.db.db_height, 'errors': sum(s.errors for s in self.sessions), 'groups': len(self.session_groups), - 'history_cache': cache_fmt.format( + 'history cache': cache_fmt.format( self._history_lookups, self._history_hits, len(self._history_cache)), 'logged': len([s for s in self.sessions if s.log_me]), - 'merkle_cache': cache_fmt.format( + 'merkle cache': cache_fmt.format( self._merkle_lookups, self._merkle_hits, len(self._merkle_cache)), 'paused': sum(s.is_send_buffer_full() for s in self.sessions), 'pid': os.getpid(), 'peers': self.peer_mgr.info(), - 'requests': sum(s.unanswered_request_count() for s in self.sessions), + 'request counts': self._method_counts, + 'request total': sum(self._method_counts.values()), + 'requests pending': sum(s.unanswered_request_count() for s in self.sessions), 'sessions': self.session_count(), 'sessions_with_subs': self.session_count_with_subs(), 'subs': self._sub_count(), - 'tx_hashes_cache': cache_fmt.format( + 'tx hashes cache': cache_fmt.format( self._tx_hashes_lookups, self._tx_hashes_hits, len(self._tx_hashes_cache)), 'txs_sent': self.txs_sent, 'uptime': util.formatted_time(time.time() - self.start_time), @@ -823,6 +827,8 @@ class SessionBase(RPCSession): handler = self.request_handlers.get(request.method) else: handler = None + method = 'invalid method' if handler is None else request.method + self.session_mgr._method_counts[method] += 1 coro = handler_invocation(handler, request)() return await coro