多进程管理常见困惑与实用解决方案
1、问题引出——多进程应用场景 场景一: 将关系型、非关系型数据的数据同步到ES中。 但是数据库中的表有多个, 一种方案是:一个配置文件中 if else 的方式配置多个表; 另外一种方案是:多个配置文件,多个进程并行执行。 如下图所示: 场景二: kafka多个通道的数据借助kafka_conne
1、问题引出——多进程应用场景
场景一:
将关系型、非关系型数据的数据同步到ES中。
但是数据库中的表有多个,
一种方案是:一个配置文件中 if else 的方式配置多个表;
另外一种方案是:多个配置文件,多个进程并行执行。
如下图所示:

场景二:
kafka多个通道的数据借助kafka_connector 或者logstash_input_kafka同步到ES中,
如下图所示: 
这时候,根据通道的处理分成如下1,2两部分:
1、kafka stream对实时数据流的数据清洗、转换操作,有几个通道就至少有几个进程;
2、kafka_connector对处理后的数据实时同步,有几个通道至少有几个进程;
3、为了提高同步的时效性,通用的方案是增加kafka的topic的分片数,这时对应的进程数有会增多。
2、多进程困惑
困惑1:需要大量重复操作。
个位数内的进程数还能接受,二十个甚至更多个进程的重复操作会很繁琐。
比如,针对N个进程的操作:
1)更新jar包,多个进程需要拷贝N次;如果各业务进程jar包名称不一致,需要改名N次。
2)重启业务,多个进程需要挨个重启N次。
困惑2:多进程管理很不直观、很繁琐。
困惑3:不能第一时间获取某个进程的宕掉信息。
困惑4:进程宕掉后,不能自动重启。
困惑5:不能定义进程的优先级。
3、常用的解决方案?
这类需求通常走两条路:要么定制开发,要么直接用脚本落地。
开发时有几个关键点需要先理顺:
1)进程文件名称尽量保持统一、最好有明显规律。
2)进程名也尽量规范、统一,这样后续无论是做数量统计,还是排查异常,都会省事很多。
统计进程数的一个常见写法是:
ps -ef | grep 进程名 | grep -v ‘color’ |wc -l
3)定时任务可以通过crontab配合sendmail来做预警。
也就是说,用脚本持续监控进程,一旦进程数量发生变化,就立即通过邮件发出告警。
4)脚本本身可以循环检测,必要时再配合定时重启。
即便如此,仍然不够高效。
有没有可视化、批量操作、自动重启、自动邮件预警的管理工具呢?
4、有没有更高效的方案呢?
实践证明有的。
后台进程管理工具Supervisor superlance(Supervisor 的增强插件工具集)。
5、多进程管理工具Supervisor
Supervisor是一个Python编写的客户端/服务器工具,允许用户在类UNIX操作系统上控制大量进程。
用途:
官网地址:http://supervisord.org/
6、Superlance增强插件工具集
Superlance是一套用于监视和控制在Supervisor下运行的进程的插件工具集。
1)httpok——此插件旨在用作主管事件侦听器,通过HTTP GET请求到达配置的URL,如果请求失败或超时,httpok将重新启动“挂起”子进程。2)crashmail——此插件旨在用作监督者事件侦听器,订阅PROCESS_STATE_EXITED事件。当进程意外进入EXITED退出状态时,它向用户发送电子邮件。这点,解决了我得困惑!3)memmon——此插件旨在用作主管事件侦听器,它监视配置的子进程的内存使用情况,并在超过配置的最大大小时重新启动它们。4)crashmailbatch——与crashmail类似,当进程意外死亡时,crashmailbatch会发送电子邮件警报。区别在于,在配置的时间间隔内生成的所有警报都会一起批处理以避免发送太多电子邮件。5)fatalmailbatch——当进程无法启动太多次时,这个插件会发送电子邮件警报,使supervisord放弃重试。在配置的时间间隔内生成的所有致命的开始事件都会一起批处理以避免发送太多的电子邮件。6)crashsms——除了通过电子邮件网关发送SMS警报外,它与crashmailbatch类似。消息格式化为适合SMS(信息)。官网地址:http://superlance.readthedocs.io/en/latest/
7、sendEmail 命令行工具
sendEmail是一个轻量级,命令行的SMTP邮件客户端。
SendEmail是用Perl编写的,它的独特之处在于它不需要任何模块。
它具有直观灵活的一组命令行选项,使其易于学习和使用。
官网地址:http://caspian.dotconf.net/menu/Software/SendEmail/
8、Supervisor等工具集部署流程
步骤1:安装supervisior
启动方法:
[root@localhost xx]# supervisord -c /etc/supervisord.conf
步骤2:安装superlance
我们主要使用superlance的监控 发送邮件的功能。
步骤3:安装SendMail
核心:借助SendMail发送邮件。
基于步骤1——步骤3的核心配置如下:
[program:exec_test]command=ja va -jar /home/test/banlance_test.jardirectory= /home/testnumprocs=1 ; autorestart=trueautostart=trueredirect_stderr=true ; stdout_logfile=/var/log/supervisor/app_test_stdout.logstderr_logfile=/var/log/supervisor/app_test_stderr.logloglevel=info[eventlistener:crashmail-exited]command=crashmail -p exec_test -s "sendEmail -f send@163.com -t recv@qq.com -s smtp.163.com -u '进程预警' -o message-content-type=html -o message-charset=utf8 -xu send@163.com -xp mima -m '业务流进程 异常退出!'" -m recv@qq.comevents=PROCESS_STATE_EXITED,PROCESS_STATE_STOPPED,PROCESS_STATE_FATAL,PROCESS_LOG_STDERRredirect_stderr=false 注意:[eventlistener:crashmail-exited]下的 -p 后面跟的就是[program:exec_test]配置的进程名称。
这样就能实现对exec_test的进程监控。
SendMail核心参数解读:
至此,以前复杂多进程的管理,改成一个配置文件就能搞定。
如果新增文件,只需要在supervisord新增对应的进程监控 邮件预警配置即可。
9、supervisior 可视化效果

截图中只有一个进程,多个进程会多行排列展示。
10、小结
文章中没有给出一步步的部署步骤,这些步骤资料网上都能查到。
主要给出解决问题的思路和官网链接。
你有没有更好的多进程解决方案,欢迎留言讨论。
参考:
作者:铭毅天下
转载请标明出处,原文地址:
https://blog.csdn.net/laoyang360/article/details/80792245
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
CAD零基础入门教程:坐标输入、图层管理与基础绘图命令
本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。
CAD从入门到项目交付:绘图、标注、图块与实战工作流
掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。
Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤
本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。
Claude Code 文件修改前的权限模式配置与命令审批指南
本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。
Claude Code接入VS Code后先测扩展和终端命令
在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。
- 热门数据榜
相关攻略
2026-09-01 16:53
2026-09-01 16:52
2026-09-01 14:27
2026-09-01 14:12
2026-09-01 14:10
2026-09-01 14:07
2026-09-01 13:55
2026-09-01 13:47
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

