Module: check_mk
Branch: master
Commit: 86e411d58d65d7ffc4861123d3419b41af2bfea4
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=86e411d58d65d7…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Tue Jul 18 11:37:03 2017 +0200
4851 FIX Improved WATO service discovery performance
The function responsible for the service discovery did not properly
cache the data for later usage. This drastically slowed down the
service discovery performance for hosts with lots of services.
Change-Id: Idc60ddbc1e6ac12098bd1d2febc0d1e0aea7caa9
---
.werks/4851 | 13 +++++++++++++
cmk_base/discovery.py | 10 +++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/.werks/4851 b/.werks/4851
new file mode 100644
index 0000000..74df3de
--- /dev/null
+++ b/.werks/4851
@@ -0,0 +1,13 @@
+Title: Improved WATO service discovery performance
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i1
+Date: 1500370603
+Class: fix
+
+The function responsible for the service discovery did not properly
+cache the data for later usage. This drastically slowed down the
+service discovery performance for hosts with lots of services.
+
diff --git a/cmk_base/discovery.py b/cmk_base/discovery.py
index a070835..888438d 100644
--- a/cmk_base/discovery.py
+++ b/cmk_base/discovery.py
@@ -1133,6 +1133,8 @@ def get_check_preview(hostname, use_caches, do_snmp_scan,
on_error):
ipaddress = ip_lookup.lookup_ip_address(hostname)
table = []
+ parsed_infos = {} # temporary cache for parsed infos
+
for (check_type, item), (check_source, paramstring) in services.items():
params = None
if check_source not in [ 'legacy', 'active', 'custom' ]:
@@ -1169,7 +1171,13 @@ def get_check_preview(hostname, use_caches, do_snmp_scan,
on_error):
try:
exitcode = None
perfdata = []
- info = agent_data.get_info_for_check(hostname, ipaddress, infotype)
+
+ if infotype in parsed_infos:
+ info = parsed_infos[infotype]
+ else:
+ info = agent_data.get_info_for_check(hostname, ipaddress, infotype)
+ parsed_infos[infotype] = info
+
# Handle cases where agent does not output data
except MKAgentError, e:
exitcode = 3