[CalendarServer-changes] [8010] CalendarServer/trunk/contrib/tools/request_monitor.py

source_changes at macosforge.org source_changes at macosforge.org
Tue Aug 23 11:08:00 PDT 2011


Revision: 8010
          http://trac.macosforge.org/projects/calendarserver/changeset/8010
Author:   sagen at apple.com
Date:     2011-08-23 11:08:00 -0700 (Tue, 23 Aug 2011)
Log Message:
-----------
Degrade gracefully if any of these system monitoring tools don't exist.

Modified Paths:
--------------
    CalendarServer/trunk/contrib/tools/request_monitor.py

Modified: CalendarServer/trunk/contrib/tools/request_monitor.py
===================================================================
--- CalendarServer/trunk/contrib/tools/request_monitor.py	2011-08-23 17:19:03 UTC (rev 8009)
+++ CalendarServer/trunk/contrib/tools/request_monitor.py	2011-08-23 18:08:00 UTC (rev 8010)
@@ -24,6 +24,14 @@
 import time
 import traceback
 
+NETSTAT = "/usr/sbin/netstat"
+enableListenQueue = os.path.exists(NETSTAT)
+IOSTAT = "/usr/sbin/iostat"
+enableCpuIdle = os.path.exists(IOSTAT)
+VMSTAT = "/usr/bin/vm_stat"
+enableFreeMem = os.path.exists(VMSTAT)
+
+
 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) 
 
 
@@ -33,7 +41,7 @@
 def listenq():
     child = Popen(
         args=[
-            "/usr/sbin/netstat", "-L", "-anp", "tcp",
+            NETSTAT, "-L", "-anp", "tcp",
         ],
         stdout=PIPE, stderr=STDOUT,
     )
@@ -96,7 +104,7 @@
 def cpuidle():
     child = Popen(
         args=[
-            "/usr/sbin/iostat", "-c", "2", "-n", "0",
+            IOSTAT, "-c", "2", "-n", "0",
         ],
         stdout=PIPE, stderr=STDOUT,
     )
@@ -107,7 +115,7 @@
     try:
         child = Popen(
             args=[
-                "/usr/bin/vm_stat",
+                VMSTAT,
             ],
             stdout=PIPE, stderr=STDOUT,
         )
@@ -389,12 +397,15 @@
             avg = "%.1f average requests per second" % (avgRequests,)
 
         print "- " * 40
-        q, lqssl, lqnon = listenQueueHistory()
         print datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"), 
-        print "Listenq (ssl+non):", q[0], " (Recent", ", ".join(q[1:]), "Oldest)"
-        q = idleHistory()
-        print "CPU idle %:", q[0], " (Recent", ", ".join(q[1:]), "Oldest)"
-        print "Memory free:", freemem()
+        if enableListenQueue:
+            q, lqssl, lqnon = listenQueueHistory()
+            print "Listenq (ssl+non):", q[0], " (Recent", ", ".join(q[1:]), "Oldest)"
+        if enableCpuIdle:
+            q = idleHistory()
+            print "CPU idle %:", q[0], " (Recent", ", ".join(q[1:]), "Oldest)"
+        if enableFreeMem:
+            print "Memory free:", freemem()
         print "CPU Per Daemon:", cpuPerDaemon()
 
         if avg:
@@ -406,13 +417,16 @@
             print "| %d (%d %%) server-to-server" % (numServerToServer, safePercent(numServerToServer, numRequests),),
         print
         
-        lqlatency = (lqssl / avgRequests, lqnon / avgRequests,) if avgRequests else (0.0, 0.0,)
-        print "Response time: average %.1f ms, max %.1f ms, listenq latency (ssl+non): %.1f s %.1f s" % (
+        print "Response time: average %.1f ms, max %.1f ms" % (
             totalRespTime / numRequests,
             maxRespTime,
-            lqlatency[0],
-            lqlatency[1],
         )
+        if enableListenQueue:
+            lqlatency = (lqssl / avgRequests, lqnon / avgRequests,) if avgRequests else (0.0, 0.0,)
+            print " listenq latency (ssl+non): %.1f s %.1f s" % (
+                lqlatency[0],
+                lqlatency[1],
+            )
         print "<10ms: %d  >10ms: %d  >100ms: %d  >1s: %d  >10s: %d  >30s: %d  >60s: %d" % (under10ms, over10ms, over100ms, over1s, over10s, over30s, over60s)
         print
         if errorCount:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110823/4ecfc367/attachment-0001.html>


More information about the calendarserver-changes mailing list