• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

关闭

返回栏目

关闭

返回服务器栏目

100 - uwsgi - 安装+基础配置

作者:

贺及楼

成为作者

更新日期:2023-09-27 11:27:34

作用:可以开更多的python项目

官网

https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html

在线安装

  1. pip install uwsgi

如果不可以:

  1. apt-get install build-essential python3.x-dev

python3.x-dev自己改

作用:分配工作的人

离线安装

  1. https://uwsgi-docs.readthedocs.io/en/latest/Download.html
  1. 放到 /usr/local
  2. cd /usr/local
  3. tar zxvf uwsgi-2.0.18.tar.gz # 解压文件夹
  4. cd uwsgi-2.0.18
  5. make

简单的配置:

baidu.ini放在与baidu.py同一个文件夹

  1. [uwsgi]
  2. socket =127.0.0.1:8000
  3. pythonpath =/xxx/xxx/XXX/venv # 这里填python的虚拟环境
  4. wsgi-file =/var/www/XXX/xxx/baidu.py
  5. processes =4
  6. threads =2
  7. home = /var/www/XXX
  8. master = true #启动主进程,来管理其他进程,其它的uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程。
  9. callable =app
  10. enable-threads=true # 允许程序内部启动多线程,为定时器
  11. preload=true #用--preload启动uWSGI,确保scheduler只在loader的时候创建一次,为定时器
  12. lazy-apps=true
  13. max-requests =5000# 每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启)
  14. reload-on-rss=500#设置工作进程使用物理内存超过N MB就回收重启
  15. reload-on-as= 500#设置工作进程使用虚拟内存超过N MB就回收重启
  16. #python-autoreload=1#这是自动重启,有新文件替换可以自动重启,上线后就要取消掉

Linux - Ubuntu看cpu

命令:lscpu

  1. Architecture: i686 #架构686
  2. CPU(s): 2 #逻辑cpu颗数是2
  3. Thread(s) per core: 1 #每个核心线程数是1
  4. Core(s) per socket: 2 #每个cpu插槽核数/每颗物理cpu核数是2
  5. CPU socket(s): 1 #cpu插槽数是1
  6. Vendor ID: GenuineIntel #cpu厂商ID是GenuineIntel
  7. CPU family: 6 #cpu系列是6
  8. Model: 23 #型号23
  9. Stepping: 10 #步进是10
  10. CPU MHz: 800.000 #cpu主频是800MHz
  11. Virtualization: VT-x #cpu支持的虚拟化技术VT-x(对此在下一博文中解释下http://hi.baidu.com/sdusoul/blog/item/5d8e0488def3a998a5c272c0.html)
  12. L1d cache: 32K #一级缓存32K(google了下,这具体表示表示cpu的L1数据缓存为32k)
  13. L1i cache: 32K #一级缓存32K(具体为L1指令缓存为32K)
  14. L2 cache: 3072K #二级缓存3072K

其中一种,设定processes、threads

  1. 服务器有2个实物cpu,每个cpu8个核心,每个核心虚出(超线程数)2个逻辑cpu,所以一共有32cpu
  2. 2*8*2 = 32
  3. processes = 32
  4. 128G内存
  5. 每个cpu平均分配到的内存为4G,系统占用2GB空间,用户占用2GB空间
  6. 那么根据linux的默认进程和线程大小计算:
  7. 默认一个进程的堆栈大小是2GB
  8. 默认一个线程的堆栈大小是1MB
  9. 所以一个进程可以开2G/1M=2048个线程,但实际上内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小,一般情况会达到1500个线程。
  10. threads = 1500

阿哈,我1核1g,只可以开processes=4,threads=4,threads=30会点一下就蹦一个processes,就直接502