server/repository.py
branchstable
changeset 8224 e35d4d4f7eb3
parent 8133 b0a70092946a
child 8236 cc70da744f43
child 8238 087bb529035c
equal deleted inserted replaced
8217:0a467663c3fe 8224:e35d4d4f7eb3
   490             ):
   490             ):
   491             results['%s_cache_size' % title] =  '%s / %s' % (size, maxsize)
   491             results['%s_cache_size' % title] =  '%s / %s' % (size, maxsize)
   492             results['%s_cache_hit' % title] =  hits
   492             results['%s_cache_hit' % title] =  hits
   493             results['%s_cache_miss' % title] = misses
   493             results['%s_cache_miss' % title] = misses
   494             results['%s_cache_hit_percent' % title] = (hits * 100) / (hits + misses)
   494             results['%s_cache_hit_percent' % title] = (hits * 100) / (hits + misses)
       
   495         results['type_source_cache_size'] = len(self._type_source_cache)
       
   496         results['extid_cache_size'] = len(self._extid_cache)
   495         results['sql_no_cache'] = self.system_source.no_cache
   497         results['sql_no_cache'] = self.system_source.no_cache
   496         results['nb_open_sessions'] = len(self._sessions)
   498         results['nb_open_sessions'] = len(self._sessions)
   497         results['nb_active_threads'] = threading.activeCount()
   499         results['nb_active_threads'] = threading.activeCount()
   498         results['looping_tasks'] = ', '.join(str(t) for t in self._looping_tasks)
   500         results['looping_tasks'] = ', '.join(str(t) for t in self._looping_tasks)
   499         results['available_cnxsets'] = self._cnxsets_pool.qsize()
   501         results['available_cnxsets'] = self._cnxsets_pool.qsize()
   500         results['threads'] = ', '.join(sorted(str(t) for t in threading.enumerate()))
   502         results['threads'] = ', '.join(sorted(str(t) for t in threading.enumerate()))
       
   503         return results
       
   504 
       
   505     def gc_stats(self, nmax=20):
       
   506         """Return a dictionary containing some statistics about the repository
       
   507         memory usage.
       
   508 
       
   509         This is a public method, not requiring a session id.
       
   510 
       
   511         nmax is the max number of (most) referenced object returned as
       
   512         the 'referenced' result
       
   513         """
       
   514 
       
   515         from cubicweb._gcdebug import gc_info
       
   516         from cubicweb.appobject import AppObject
       
   517         from cubicweb.rset import ResultSet
       
   518         from cubicweb.dbapi import Connection, Cursor
       
   519         from cubicweb.web.request import CubicWebRequestBase
       
   520         from rql.stmts import Union
       
   521 
       
   522         lookupclasses = (AppObject,
       
   523                          Union, ResultSet,
       
   524                          Connection, Cursor,
       
   525                          CubicWebRequestBase)
       
   526         try:
       
   527             from cubicweb.server.session import Session, InternalSession
       
   528             lookupclasses += (InternalSession, Session)
       
   529         except ImportError:
       
   530             pass # no server part installed
       
   531 
       
   532         results = {}
       
   533         counters, ocounters, garbage = gc_info(lookupclasses,
       
   534                                                viewreferrersclasses=())
       
   535         values = sorted(counters.iteritems(), key=lambda x: x[1], reverse=True)
       
   536         results['lookupclasses'] = values
       
   537         values = sorted(ocounters.iteritems(), key=lambda x: x[1], reverse=True)[:nmax]
       
   538         results['referenced'] = values
       
   539         results['unreachable'] = len(garbage)
   501         return results
   540         return results
   502 
   541 
   503     def get_schema(self):
   542     def get_schema(self):
   504         """Return the instance schema.
   543         """Return the instance schema.
   505 
   544