uWSGI重启时停机

2024-04-29

每次当我有代码更新时重新启动服务器时,我都会遇到 uwsgi 问题。

  1. 当我使用“sudo restart account”重新启动 uwsgi 时,停止和启动实例之间存在一个小间隙,导致停机并停止所有当前请求。

  2. 当我尝试“sudo reloadcounting”时,它有效,但我的记忆力上升(双倍)。当我运行命令“ps aux | grep account”时,它显示我有 10 个正在运行的进程 (accounting.ini),而不是 5 个,并且当内存达到限制时,它会冻结我的服务器。

会计.ini

我在跑步

  • 乌班图14.04
  • 姜戈 1.9
  • nginx 1.4.6
  • uwsgi 2.0.12

这就是 uwsgi 优雅地重新加载的方式。保留旧进程,直到请求得到服务为止,并创建新进程来接管传入请求。

Read 可能出错的事情 https://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#things-go-wrong

不要忘记,您的工作人员/线程仍在运行请求 可能会阻止重新加载(由于各种原因)超过几秒 您的代理服务器可以容忍。

And this

优雅重载的另一个重要步骤是避免破坏 仍在管理请求的工作人员/线程。明显要求 可能会被卡住,所以你应该有一个运行工人的超时(在 uWSGI被称为“工人的怜悯”,它的默认值为 60 秒)。

所以我建议尝试工人重载怜悯 https://uwsgi-docs.readthedocs.io/en/latest/Options.html?highlight=mercy#worker-reload-mercy

默认值是等待 60 秒,只需将其降低到服务器可以处理的值即可。

告诉我是否有效。


Uwsgi链重新加载

这是解决您的问题的另一次尝试。正如您提到的,您的 uwsgi 工作人员正在以下述方式重新启动:

  1. send SIGHUP向主人发出信号
  2. 等待正在运行的工人。
  3. 关闭除映射到套接字的文件描述符之外的所有文件描述符。
  4. 对自身调用 exec()。

这种重新加载的缺点之一可能是工作人员被卡住。 此外,您报告说,当 uwsgi 维护 10 个进程(5 个旧进程和 5 个新进程)时,您的服务器崩溃。

我建议尝试链条重新加载。文档中的直接引用解释了这种重新加载的最佳方式:

当触发时,它会一次重启一名工人,并且直到前一个工作人员准备好接受新请求之前,不会重新加载后面的工作人员。

这意味着您的服务器上不会有 10 个进程,而是只有 5 个。

应该有效的配置:

# your .ini file
lazy-apps = true
touch-chain-reload = /path/to/reloadFile

有关链重载和其他类型的一些资源位于以下链接中:

链重载 uwsgi 文档 https://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html?highlight=chain#chain-reloading-lazy-apps

uWSGI 优雅的Python代码部署 http://zarnovican.github.io/2016/02/15/uwsgi-graceful-reload/#pre-fork-vs-lazy-app

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uWSGI重启时停机 的相关文章

随机推荐

  • jcr:primaryType 和 jcr:mixinTypes 有什么区别?

    我只是想知道 jcr primaryType 和 jcr mixinTypes 之间有什么区别 以及为什么使用 jcr mixinTypes 它意味着什么 如果您检查 crx 中的 content dam 文件夹 它会显示 jcr prim
  • jQuery 中使用 bind() 和each() 分配事件处理程序的区别?

    有人可以告诉我使用bind 分配事件处理程序有什么区别吗 function someElement bind mouseover function e this css change color bind mouseout function
  • Django Rest Framework 嵌套序列化器不显示相关数据

    我使用 Django Rest Framework 进行了基本设置 我有两个模型和一个嵌套序列化器设置 models py from django db import models class Plan models Model name
  • CSV 字段中引号前的空格

    从 CSV 规范 RFC 4180 https www rfc editor org rfc rfc4180 Spaces are considered part of a field and should not be ignored 显
  • PHP 生成唯一的字符串

    我在表中有一个 ID 列 用于存储行 ID 号 自动递增 例如 1 2 3 我想生成一个随机且唯一的字符串 该字符串只能包含数字 字母 破折号 和下划线 字符串长度为4 6 且唯一 有人可以帮我如何生成吗 谢谢 使用这个 base conv
  • 生成固定长度的随机数组[重复]

    这个问题在这里已经有答案了 我只是想更改我的代码 以便每次运行代码时都会生成固定长度 100 个整数的随机数组 而不仅仅是在代码中包含一个预先设置的数组 我对此很陌生 所以只需要正确方向的指导 谢谢 public class Selecti
  • Android BuildConfig 字段错误生成字符串

    在开始新项目的最后一天 我在构建配置中创建了一些变量 作为在发布和调试构建之间单独处理它们的好习惯 如下所示 buildTypes release minifyEnabled false buildConfigField String PA
  • 在 Ruby 中获取 system() 调用的输出

    如果我使用调用命令内核 系统 http ruby doc org core 2 2 0 Kernel html method i system在 Ruby 中 如何获取其输出 system ls 我想扩展和澄清混沌的答案 https sta
  • 将 C# 参数传递给 JS

    我有一个 C MVC 项目 我想每隔 X 秒刷新一次页面 我将代码放入cshtml文件中 但我需要从 C 中获取 X 假设它是 ViewBag Seconds 我怎样才能做到这一点 Razor 不关心它是输出 HTML 还是 javascr
  • 我需要从带有数据页的页面在组件中运行函数

    我有一个用于绘制图形或树的组件 并且我在页面中使用此组件 我的 axios 在页面上并提供数据 我需要将数据传递给组件的函数 然后从页面数据中绘制我的树 My Page
  • 检测 USB 连接 -- C# .Net CF 3.5

    我有一个在 Windows Mobile 6 1 设备上运行的应用程序 Net Compact Framework 3 5 我想检测 USB 连接何时发生变化 连接或断开连接 我最初使用的是SystemProperty CradlePres
  • 通过 ant 构建脚本将命令行参数传递给 Java

    运行以下命令时 ant targetname Dk1 v1 Dk2 v2 我想要将命令行参数传递给java like java whatever Dk1 v1 Dk2 v2 我需要从 Java 代码访问这些参数System getPrope
  • 当线程无法访问所有已用堆时查找 Java 内存泄漏

    我正在研究基于 Java 的大型系统中潜在的内存泄漏 或至少是内存浪费 JVM 运行时的最大堆大小为 5 GB 2 3GB 堆使用量是应用程序的预期基准 可能会有更高的峰值 在我正在调查的过载场景中 堆被填满 使用 Eclipse Memo
  • 如何在 Pygame 中制作边框

    我试图让游戏的某个区域周围有边框 并使用一种尺寸来不断更改我的代码 以便它适用于一种尺寸 这是代码 screen xpos ypos height width border width color def draw borders s x
  • H2O R 中的子集化

    我有一个 h2o 对象 子集的标准 R sub1 lt trans trans Type 1 我在水中也尝试过同样的方法 它不工作 sub1 lt trans trans Type 1 我也尝试过 sub1 lt h2o exec tran
  • ViewPager 具有不同的纵向和横向适配器

    在纵向模式下 我的ViewPager有 3 个片段 A B C 但在横向模式下 它只有 2 个片段 A 和 C 所以我创建了 2 个FragmentStatePagerAdapters 代表每种模式 问题是当屏幕方向改变时 ViewPage
  • 我可以将 Selenium WebDriver 与 Google Cloud Functions 结合使用吗?

    我正在尝试使用 Selenium 构建解决方案 我可以使用 Firebase Functions 通过 Selenium 初始化和加载网页吗 我发现一些资源说 不 然而他们没有给出任何来源 而且他们已经4岁了 在 Cloud Functio
  • nuget 创建两个包文件夹?

    OK 所以我最近重新安装了Windows 10并升级了vs2013 gt vs2015 此时我试图获取几个 nuget 包 我遇到的问题是 我有一个 nuget packages 文件夹 其级别与我的解决方案文件 通过 NuGet conf
  • 如何使用 C# 更新 Active Directory 属性。

    如何使用 C 更新 Active Directory 属性 就我而言 我有以下情况 对于每个用户都有一个WhenCreatedAD 中的属性 但我想要的是 如果whenDate设置的时间少于 30 天info归因于NEW在活动目录中 我怎样
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload