python - uWSGI worker 1 小时后无响应或执行停止
问题描述
我正在为 python 微服务使用NGINX、uWSGI和烧瓶。此 api 从 DB 中读取,进行一些计算并将传递的参数写入 DB。对于一个参数(我传递给这个 api),由于数据量很大,大约需要 20 分钟才能完成执行。同样,我必须为 9 个不同的参数运行这个 api。一个接一个地完成需要3个多小时。所以我把这个api实现为python线程(使数据库和相关代码同步)。当前使用连接池进行数据库连接。然后,如果我并行发送相同 api 的请求 9 次(传递 9 个不同的参数),则执行工作正常,直到 1 小时。然后 uWSGI worker 自动停止执行而没有任何错误(甚至没有 SIGKILL)。这是我的 uWSGI 配置。
[uwsgi]
module = main
callable = app
uid = nginx
gid = nginx
socket = /tmp/uwsgi.sock
chmod-socket = 666
cheaper = 2
processes = %(%k * 3)
workers = 10
cheaper-step = 1
enable-threads = true
buffer-size=32768
有什么建议可能是什么问题?
仅供参考:由于我将其作为线程运行,因此我在启动线程后发送响应。所以响应不需要时间。发送响应后,此特定任务读取、计算和写入 DB 部分正在后台运行。
解决方案
推荐阅读
- c++11 - C ++模板别名g ++ 5.4
- c - 自读取阻塞以来经过的时间
- logstash - 从 activemq 主题获取消息时,logstash 输入非常缓慢
- python - 每组时间戳之间的平均时间不按顺序
- r - 从R中的数据框中提取
- python - 使用 jupyter lab 重新连接到远程运行内核
- c# - 如何在运行时更改 WPF Material Design Palette?
- tensorflow.js - 加载 mobilenet v2 有效,但预训练的 mobilenet v2 失败
- ios - 无法使用 Xcode Instruments 定位内存泄漏
- performance - 如何按增长率顺序排列功能?所以 f(n) 是 O(g(n))