diff --git a/synapse/metrics/__init__.py b/synapse/metrics/__init__.py
index 3f7b7158aa4f59995bb8a352eff7a27346929488..943d6374592c61d8a6de1988f922b4c6a906f9ca 100644
--- a/synapse/metrics/__init__.py
+++ b/synapse/metrics/__init__.py
@@ -130,6 +130,10 @@ def _process_fds():
     counts = {(k,): 0 for k in TYPES.values()}
     counts[("other",)] = 0
 
+    # Not every OS will have a /proc/self/fd directory
+    if not os.path.exists("/proc/self/fd"):
+        return counts
+
     for fd in os.listdir("/proc/self/fd"):
         try:
             s = os.stat("/proc/self/fd/%s" % (fd))