Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cx_Oracle-Django ORM-引用计数增加_Python_Django_Python 2.7_Orm_Cx Oracle - Fatal编程技术网

Python cx_Oracle-Django ORM-引用计数增加

Python cx_Oracle-Django ORM-引用计数增加,python,django,python-2.7,orm,cx-oracle,Python,Django,Python 2.7,Orm,Cx Oracle,我有一个长期运行的Python进程,它使用Django ORM对Oracle数据库进行攻击 这个过程的规模一直在稳步增长 我使用mem_top分析这个过程,发现一种特定数据类型的引用计数随着迭代次数的增加而不断增加 数据类型为[{u'time':u'0.004',u'sql':u'QUERY=u'SELECT RANGE\u STATUS.I 参考文献从534份增加到53295份 这个列表似乎包含了使用ORM执行的几乎所有查询 这是否意味着cx_Oracle模块或Django ORM中的某个地方

我有一个长期运行的Python进程,它使用Django ORM对Oracle数据库进行攻击

这个过程的规模一直在稳步增长

我使用mem_top分析这个过程,发现一种特定数据类型的引用计数随着迭代次数的增加而不断增加

数据类型为[{u'time':u'0.004',u'sql':u'QUERY=u'SELECT RANGE\u STATUS.I

参考文献从534份增加到53295份

这个列表似乎包含了使用ORM执行的几乎所有查询

这是否意味着cx_Oracle模块或Django ORM中的某个地方存在内存泄漏

这是相隔10分钟的两次迭代之间的memtop结果

警告:2014年12月27日05:45:46下午:

refs:
9500    <type 'dict'> {'TAPE_DRIVE_FORMAT': -1610612736, 'SLE_ERROR': 1, 'IMAGE_REL_I386_SEC
8410    <type 'list'> [('200', '343045', 1321), ('200', '343046', 1322), ('200', '343047', 1
1578    <type 'dict'> {'logging.atexit': None, 'django.core.files.errno': None, 'django.test
1567    <type 'list'> ['mem_top', 'mem_top', 'datetime', 'datetime', 'sys', 'string', 'os', 
688 <type 'dict'> {'FILE_SYSTEM_ATTR': 2, 'GetDriveTypeW': <built-in function GetDriveTy
688 <type 'dict'> {'FILE_SYSTEM_ATTR': 2, 'GetDiskFreeSpaceEx': <built-in function GetDi
534 <type 'list'> [{u'time': u'0.004', u'sql': u'QUERY = u\'SELECT "RANGE_STATUS"."I
510 <type 'dict'> {'GetDiskFreeSpaceEx': <built-in function GetDiskFreeSpaceEx>, 'SetThr
510 <type 'dict'> {'GetDiskFreeSpaceEx': <built-in function GetDiskFreeSpaceEx>, 'SetThr
370 <type 'list'> [<weakref at 01CF5030; to 'type' at 1E228030 (type)>, <weakref at 01CF
types:
8625     <type 'function'>
3778     <type 'tuple'>
3128     <type 'dict'>
1672     <type 'list'>
1661     <type 'cell'>
1440     <type 'weakref'>
1351     <type 'wrapper_descriptor'>
1103     <type 'builtin_function_or_method'>
888  <type 'type'>
734  <type 'getset_descriptor'>
警告:2014年12月27日05:54:37下午:

refs:
53295   <type 'list'> [{u'time': u'0.004', u'sql': u'QUERY = u\'SELECT "RANGE_STATUS"."I
9500    <type 'dict'> {'TAPE_DRIVE_FORMAT': -1610612736, 'SLE_ERROR': 1, 'IMAGE_REL_I386_SEC
8410    <type 'list'> [('200', '343045', 1321), ('200', '343046', 1322), ('200', '343047', 1
1578    <type 'dict'> {'logging.atexit': None, 'django.core.files.errno': None, 'django.test
1567    <type 'list'> ['mem_top', 'mem_top', 'datetime', 'datetime', 'sys', 'string', 'os', 
749 <type 'list'> ['A. HISTORY OF THE SOFTWARE', '==========================', '', 'Pyth
688 <type 'dict'> {'FILE_SYSTEM_ATTR': 2, 'GetDriveTypeW': <built-in function GetDriveTy
688 <type 'dict'> {'FILE_SYSTEM_ATTR': 2, 'GetDiskFreeSpaceEx': <built-in function GetDi
510 <type 'dict'> {'GetDiskFreeSpaceEx': <built-in function GetDiskFreeSpaceEx>, 'SetThr
510 <type 'dict'> {'GetDiskFreeSpaceEx': <built-in function GetDiskFreeSpaceEx>, 'SetThr
types:
8625     <type 'function'>
3778     <type 'tuple'>
3130     <type 'dict'>
1675     <type 'list'>
1661     <type 'cell'>
1440     <type 'weakref'>
1351     <type 'wrapper_descriptor'>
1103     <type 'builtin_function_or_method'>
888  <type 'type'>
734  <type 'getset_descriptor'>

请指导。

事实证明,在我的Django设置中,我的Debug=True…将其转换为False解决了此问题。使用Debug=True,Django在内部构建了一个列表,我认为该列表具有过多的引用计数。

同样重要的是,请记住,在启用Debug的情况下运行时,Django将记住它执行的每个SQL查询这在调试时很有用,但会快速消耗生产服务器上的内存。