原文:http://projects.unbit.it/uwsgi/wiki/ThingsToKnow

需要知道的内容(最佳实践和问题)

--http 和 --http-socket 完全不一样。 第一个产生一个附加的进程(一个代理),将请求路由(routing) 到uwsgi实例上。第二个,设置uwsgi为原生的http。如果web服务器不支持uwsgi协议,你需要使用http(像webfaction 或者 heroku)--http-socket.如果你打算发布你的app(从1.3-dev版开始支持https)使用 http转发、路由、代理、负载会很可靠。

默认的发送 SIGTERM(终止信号)的意思是“brutally-reload-it”,普通的apps在遇到SIGTERM会关闭。关闭uwsgi使用SIGINT or SIGQUIT.如果你不想这样设置,你可以使用--die-on-term 选项。

如果打算托管多个应用,使用Emperor

使用uwsgitop或者相似的东西来监控你的apps

uWSGI可以从代码和插件中引入新功能。通常你发行版uwsgi包是模块化的。这种情况下要记得加载需要的插件。如果看到'unavailable modifier requested'这样的信息,意味着插件没有加载上。如果使用distro-supplied包,双击来安装。

配置文件支持,变量,if逻辑和简单循环。检查ConfigLogic 和ParsingOrder

为了转发请求到指定的插件,web服务器需要床底一个魔法数,默认数字是0(对应python)。举个栗子,转发一个请求到psgi (perl)要设置modifier为5,或者加载psgi插件为‘0’。
    规则没有定义线程或进程数目。这取决于应用和系统以来。不要以为只是简单的2*cpucores就够了。你需要尝试不同的设置,同时不断的监控你的app。uwsgitop是一个非常好的工具来找到这个最佳值。

如果http请求有一个body(像post一个表单)你不读取,那么socket和web服务器的通讯会被拖垮。如果你不想手动读取,使用 --post-buffering选项,这样会自动为你读取这些数据。

常常检查你的内存使用。--memory-report 选项非常有用。

如果你打算使用unux sockets,记住它们是标准的文件对象。这意味着它们有权限,所以web服务器要可以写。

不要用root运行uwsgi。它们明显可以用root运行,但是确保它们降权使用 --uid 和--gid选项。

uwsgi 只要可能的情况下都用 fork() 来复制。默认,他会在加载应用后执行 fork 。如果你不想使用 --lazy选项。开启它,会知道uwsgi来加载应用。lazy模式优雅的重启works:代替重载的是,每个worker轮流着reload。如果你使用'lazy app loading',但你想维持标准的uwsgi重载行为,在1.3之后你可以使用 --lazy-apps 选项。

默认的python插件不会初始化GIL,意味着你的app线程不会运行。如果需要线程,记得开启 --enable-threads .运行uwsgi在多线程模式(--threads)会自动开启线程支持。这是由于性能所引起的奇怪行为,并不可耻。

如果为一个请求开启一个进程,它会继承一个worker的文件描述,包括socket连接web服务器或路由器。如果不想使用这个特性,设置--close-on-exec 选项。

Ruby的垃圾回收默认实在每个请求后。这是一个拖慢你的apps的危险策略(消耗CPU成本要低于内存成本)。改变这个频率使用 --ruby-gc <freq> option

在OpenBSD,NetBSD和FreeBSD(<9v版本)ipc信号使用的锁子系统。这次操作系统分贝的信号量优先。应该提高默认限制。如果你要运行多个uwsgi实例就提高这些限制。freebsd 9以后都不需要设置。

不要在不同的uwsgi库中编译构建插件(至少要确切的知道你要做什么)

默认的uwsgi分配一个小的buffer(4k)来接收每个请求的头信息。如果在日志中看见"invalid request block size",它意味着你需要一个大一点的buffer。使用--buffer-size增长(到60K):如果接收'21573' 作为你接收的块大小,这意味着你使用htpp实例覆盖了uwsgi协议!!!

转载于:https://www.cnblogs.com/wanself/archive/2012/11/26/2789028.html

uwsgi基础——最佳实践和问题相关推荐

  1. uwsgi模式_uwsgi基础——最佳实践和问题

    需要知道的内容(最佳实践和问题) --http 和 --http-socket 完全不一样. 第一个产生一个附加的进程(一个代理),将请求路由(routing) 到uwsgi实例上.第二个,设置uws ...

  2. SAP(HANA+S/4)上云基础环境部署最佳实践

    简介:为提高客户服务水平及集团管理效率,客户选择了SAP解决方案.但是同时也对客户的IT基础设施提出了更多的要求.对此我们针对SAP上云基础设施选型.云原生产品.灾备方案设计,云上安全环境设计总结出了 ...

  3. 点评《云计算:从基础架构到最佳实践》

    读完<云计算:从基础架构到最佳实践>一书.在当前林林总总有关云计算的书籍中,该书有其独到之处,值得IT内人士以及广大云计算技术探究者们一读,特别是对有意规划和建设"私有云数据中心 ...

  4. 最佳实践 | 用腾讯云AI语音识别零基础实现小程序语音输入法

    先回顾下,生活.工作中你使用过哪些语音识别相关的产品或者服务? 培训/考试相关的小程序,使用语音识别来判断回答是否正确: 英语口语练习的小程序,使用语音识别来打分: 你画我猜类的小程序,使用语音识别来 ...

  5. Java getter和Setter:基础、常见错误和最佳实践

    getter和setter在Java中得到了广泛的应用.它看起来很简单,但并不是每个程序员都能正确地理解和实现这种方法.因此,在本文中,我想深入讨论Java中的getter和setter方法-从基础到 ...

  6. 项目版本管理的最佳实践:gitflow基础篇

    对于项目版本管理,你是否存在这样的痛点:项目分支多而杂不好管理,git log界面commit信息错乱复杂无规范,版本回退不知道选择什么版本合适--. 项目版本管理的最佳实践系列,笔者将以两篇文章的形 ...

  7. 5种云计算安全基础知识和最佳实践

    将业务迁移到云端的企业必须承担新的责任,开发新的技能,并实施新的流程.而改善云计算的安全性的第一步是假设没有安全性. 云计算改变了企业的工作方式,并将继续颠覆传统的商业模式.根据调研机构IDC公司的预 ...

  8. 基础入门_Python-内建函数.运维开发中eval内建函数的最佳实践?

    简单介绍: 说明: 在指定命名空间中计算参数字符串的有效表达式,并返回一个对象, Help on built-in function eval in module __builtin__:eval(. ...

  9. Java基础学习总结(165)——API 安全最佳实践

    虽然本质上 API 就是拿来用的,但即便某个 API 的使用者全是内部人员,它还是可能会出现安全问题.为了解决 API 安全问题,在本文我们收集了一系列 API 的最佳实践,希望你记住这些 Tips ...

最新文章

  1. 干货!用大白话告诉你什么是Mock测试
  2. JZOJ 5183. 【NOIP2017提高组模拟6.29】小T的钢琴
  3. 用于Web开发的8 个最好的跨平台编辑器
  4. win8下cocos2dx3.2移植android平台及代码打包APK
  5. 君正T20平台生成jffs2格式rootfs
  6. java学习(105):字符串indexof,spilt,substring方法
  7. python变量和字符_Python变量和字符串
  8. SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例
  9. 在线编辑器FreeTextBox的使用
  10. 回答朋友的问题(关于 RTEMS 学习)
  11. 前端页面加载速度优化---Ngnix之GZIP压缩
  12. Oracle bad magic 1,linux下Oracle的安装
  13. 学术论文的格式要求是怎样的?
  14. 计算机电源接口作用,计算机DIY必修课程,电源接口的详细说明
  15. 数据库优化---空间换时间优化
  16. win7系统中如何使文件显示出扩展名
  17. 房产经纪人拿楼市新政炒作涨价
  18. vue3中 v-md-editor 编辑器的基本使用分享
  19. 到了公司git使用工作流
  20. RPA技术可行性方案确认-辅助手册

热门文章

  1. java数据结构读书笔记--引论
  2. Pyqt 窗体间传值
  3. 《面向模式的软件体系结构1--模式系统》读书笔记(5)--- 管理
  4. DNS 与 活动目录 的关系
  5. 【LDA学习系列】LDA-Python库
  6. 【正一专栏】欧冠决赛点评——只服齐达内,送别布冯
  7. 机器学习知识点(二十八)Beta分布和Dirichlet分布理解
  8. Leetcode 350. 两个数组的交集 II 解题思路及C++实现
  9. Java线程简单总结
  10. 读书计划清单之碎碎念