关于python的Django项目性能优化

ops/2024/10/18 12:33:05/
 

CPU——

Python编写的Django程序在服务器上消耗CPU的主要原因包括频繁的IO操作、大量的计算任务、以及第三方库的性能问题。

  1.  

    频繁的IO操作‌:当Python程序频繁进行IO操作,如读写文件、网络请求等,会导致CPU占用过高。这是因为IO操作通常是相对较慢的,当程序在等待IO操作完成时,CPU会一直处于运行状态,从而导致CPU占用率增加。例如,频繁地读写大文件或进行大量的网络请求都可能导致CPU占用过高。

  2.  

    大量的计算任务‌:如果Python程序需要进行大量的计算任务,比如遍历大型数据集、执行复杂的数学运算等,也会导致CPU占用过高。这些计算密集型任务需要CPU进行大量的运算,从而增加了CPU的使用率。

  3.  

    第三方库的性能问题‌:使用的第三方库可能存在性能问题,导致在使用过程中占用了过多的CPU资源。在使用第三方库时,需要注意其性能表现,并及时更新到最新版本,以减少对CPU的过度使用。

为了降低Python进程的CPU占用,可以采取以下几种解决方法:

  • 检查代码中的无限循环,通过添加适当的退出条件来解决。
  • 优化IO操作,使用异步IO或多线程技术来处理IO操作,以减少CPU的占用。
  • 及时更新第三方库到最新版本,以解决可能的性能问题。

通过这些措施,可以有效地降低Python Django程序对服务器CPU的消耗,提高服务器的性能和响应速度‌

两次单项测试的cpu性能消耗问题

ncalls  tottime  percall  cumtime  percall filename:lineno(function)196    0.008    0.000    9.509    0.049 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:768(execute_command)1    0.004    0.004    8.107    8.107 /Users/cengyang/code/media_manager/tools/task_tool.py:849(ban_task)304    0.003    0.000    7.985    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:634(read_response)304    0.010    0.000    7.982    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:289(read_response)304    0.016    0.000    7.971    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:218(readline)304    0.007    0.000    7.952    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:174(_read_from_socket)304    0.001    0.000    7.944    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/_compat.py:57(recv)304    7.943    0.026    7.943    0.026 {method 'recv' of '_socket.socket' objects}36    0.005    0.000    7.612    0.211 /Users/cengyang/code/media_manager/tools/task_tool.py:645(counts_out)55    0.001    0.000    7.047    0.128 /Users/cengyang/code/media_manager/tools/dao_tools.py:203(get)98    0.003    0.000    6.919    0.071 /Users/cengyang/code/media_manager/tools/dao_tools.py:113(get_pool)98    0.001    0.000    6.915    0.071 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:1035(ping)196    0.003    0.000    5.117    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:786(parse_response)196    0.005    0.000    4.364    0.022 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:984(get_connection)196    0.005    0.000    4.351    0.022 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:487(connect)1    0.000    0.000    3.251    3.251 /Users/cengyang/code/media_manager/tools/task_tool.py:931(set_child_tasks)11    0.001    0.000    3.249    0.295 /Users/cengyang/code/media_manager/tools/task_tool.py:780(set_task_json)54    0.003    0.000    2.889    0.054 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:563(on_connect)83    0.001    0.000    2.816    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/utils.py:67(execute)83    0.001    0.000    2.815    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/utils.py:73(_execute_with_wrappers)83    0.002    0.000    2.815    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/utils.py:79(_execute)83    0.001    0.000    2.812    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/mysql/base.py:68(execute)83    0.001    0.000    2.812    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/cursors.py:151(execute)83    0.002    0.000    2.802    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/cursors.py:324(_query)83    0.002    0.000    2.798    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:508(query)83    0.001    0.000    2.790    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:720(_read_query_result)83    0.002    0.000    2.789    0.034 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:1073(read)3416    0.084    0.000    2.719    0.001 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:648(_read_packet)6832    0.012    0.000    2.221    0.000 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:687(_read_bytes)6832    0.010    0.000    2.195    0.000 {method 'read' of '_io.BufferedReader' objects}116    0.001    0.000    2.185    0.019 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py:572(readinto)116    2.183    0.019    2.183    0.019 {method 'recv_into' of '_socket.socket' objects}44    0.003    0.000    2.183    0.050 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:1177(_fetch_all)340    0.005    0.000    2.180    0.006 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:47(__iter__)85/82    0.002    0.000    2.147    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/manager.py:81(manager_method)43    0.001    0.000    2.047    0.048 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/sql/compiler.py:1039(execute_sql)
38410/13256    0.006    0.000    1.910    0.000 {built-in method builtins.len}41    0.000    0.000    1.907    0.047 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:253(__len__)37    0.001    0.000    1.840    0.050 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:389(get)27    0.001    0.000    1.563    0.058 /Users/cengyang/code/media_manager/tools/dao_tools.py:198(set)55    0.001    0.000    1.459    0.027 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:1260(get)54    0.004    0.000    1.455    0.027 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:513(_connect)54    1.406    0.026    1.406    0.026 {method 'connect' of '_socket.socket' objects}ncalls  tottime  percall  cumtime  percall filename:lineno(function)300    0.014    0.000   13.850    0.046 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:768(execute_command)452    0.005    0.000   11.689    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:634(read_response)452    0.017    0.000   11.683    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:289(read_response)452    0.027    0.000   11.664    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:218(readline)452    0.012    0.000   11.633    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:174(_read_from_socket)452    0.001    0.000   11.619    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/_compat.py:57(recv)452   11.617    0.026   11.617    0.026 {method 'recv' of '_socket.socket' objects}150    0.005    0.000    9.941    0.066 /Users/cengyang/code/media_manager/tools/dao_tools.py:113(get_pool)150    0.001    0.000    9.933    0.066 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:1035(ping)83    0.002    0.000    8.483    0.102 /Users/cengyang/code/media_manager/tools/dao_tools.py:203(get)1    0.004    0.004    8.152    8.152 /Users/cengyang/code/media_manager/tools/task_tool.py:852(ban_task)300    0.005    0.000    7.706    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:786(parse_response)36    0.006    0.000    7.659    0.213 /Users/cengyang/code/media_manager/tools/task_tool.py:648(counts_out)12    0.003    0.000    6.692    0.558 /Users/cengyang/code/media_manager/tools/task_tool.py:284(task_can_do)300    0.009    0.000    6.092    0.020 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:984(get_connection)300    0.006    0.000    6.068    0.020 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:487(connect)76    0.006    0.000    4.018    0.053 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:563(on_connect)104    0.001    0.000    3.420    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/utils.py:67(execute)104    0.001    0.000    3.419    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/utils.py:73(_execute_with_wrappers)104    0.003    0.000    3.418    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/utils.py:79(_execute)104    0.001    0.000    3.415    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/backends/mysql/base.py:68(execute)104    0.002    0.000    3.415    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/cursors.py:151(execute)104    0.002    0.000    3.400    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/cursors.py:324(_query)104    0.002    0.000    3.396    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:508(query)104    0.001    0.000    3.386    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:720(_read_query_result)104    0.003    0.000    3.384    0.033 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:1073(read)3694    0.098    0.000    3.302    0.001 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:648(_read_packet)11    0.002    0.000    2.940    0.267 /Users/cengyang/code/media_manager/tools/task_tool.py:600(time_key_cando)65    0.004    0.000    2.871    0.044 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:1177(_fetch_all)367    0.007    0.000    2.867    0.008 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:47(__iter__)7388    0.013    0.000    2.733    0.000 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/pymysql/connections.py:687(_read_bytes)64    0.002    0.000    2.703    0.042 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/sql/compiler.py:1039(execute_sql)7388    0.012    0.000    2.703    0.000 {method 'read' of '_io.BufferedReader' objects}32    0.001    0.000    2.701    0.084 /Users/cengyang/code/media_manager/tools/dao_tools.py:198(set)134    0.001    0.000    2.691    0.020 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py:572(readinto)134    2.688    0.020    2.688    0.020 {method 'recv_into' of '_socket.socket' objects}
42797/15544    0.007    0.000    2.601    0.000 {built-in method builtins.len}62    0.000    0.000    2.597    0.042 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/query.py:253(__len__)106/103    0.003    0.000    2.257    0.022 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/django/db/models/manager.py:81(manager_method)83    0.001    0.000    2.172    0.026 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/client.py:1260(get)76    0.004    0.000    2.041    0.027 /Users/cengyang/code/envs/demo2/lib/python3.6/site-packages/redis/connection.py:513(_connect)76    1.968    0.026    1.968    0.026 {method 'connect' of '_socket.socket' objects}

内存——

redis——

RDS——

带宽——


http://www.ppmy.cn/ops/99153.html

相关文章

[Day 60] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在金融風險管理中的應用 金融風險管理是當前金融行業面臨的重要課題之一。隨著金融市場日益複雜,傳統的風險管理方法已難以應對新興的風險。人工智能技術的發展,為金融風險管理提供了全新的解決方案。 一、AI在金融風險監測與預警中的應用 異常行為檢測 金融交易數據蘊含著…

游戏引擎phaser.js3的使用之玩家和静态物理组碰撞

玩家和静态物理组都加载好了,那就应该开始操作玩家动态和静态之间的碰撞了 下面是通过点击图片按钮来操作碰撞的 sky.on(pointerdown, function () { console.log(图片被点击了!); }) 图片点击后让动态的玩家和静态的物理组碰撞,就可以这…

浅谈Redis(一)

浅谈Redis(一) 文章目录 浅谈Redis(一)Redis的特点Redis线程模型Redis单线程为什么快Redis持久化方案Redis缓存淘汰策略Redis缓存穿透、击穿和雪崩区别和解决方案 Redis是一个开源的内存数据结构存储系统,可以用作数据…

DDS IP实现啁啾信号

简介 DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信号处理及其硬件实现有着很重要的作用。DDS 的基本…

搜维尔科技:正在使用Faceware面部表情捕捉系统实时给影视角色配音

正在使用Faceware面部表情捕捉系统实时给影视角色配音 搜维尔科技:正在使用Faceware面部表情捕捉系统实时给影视角色配音

正则表达式入门:Python ‘ re ‘ 模块详解

正则表达式(Regular Expression,简称 re)是一种强大而灵活的工具,广泛用于字符串匹配、替换和分割等操作,尤其在处理网页爬虫数据时非常有用。Python 提供了 " re " 模块来支持正则表达式的使用,…

吴恩达机器学习课后作业-05偏差与方差

偏差与方差 题目欠拟合改进欠拟合影响偏差和方差因素训练集拟合情况训练集和测试集代价函数选择最优lamda 整体代码 训练集:训练模型 验证集︰模型选择,模型的最终优化 测试集:利用训练好的模型测试其泛化能力 #训练集 x_train,y_train data[X],data[ y]#验证集 …

数码管驱动器ICM2718A

相关引脚说明: WR:控制D0-D7数据是否写入,低电平有效(高到低脉冲) MODE:高电平写入控制字,低电平写入数据 ID4:高电平正常工作模式,低电平关闭工作模式 ID5&#xff…