linux - 已建立的Linux进程

标签 linux mdm

我们正在运行一个 IBM MDM 服务器(启动),它通过池机制连接到 Oracle DB 服务器。池的配置已设置为 32。我们还有一个自定义 java 进程,通过 MDM 服务器公开的 API 将数据提交到此 MDM 服务器。一旦我们的自定义 java 进程(不直接打开任何数据库连接)终止,我们就会看到 MDM 服务器和数据库服务器之间的进程数量已上升到大于 32 的数量。每次夜间运行后,我们看到进程数量不断增加,最终达到 Oracle DB 设置的限制(700),并且数据库不会允许向其打开任何更多连接,我们的进程在当晚失败。我们试图弄清楚为什么进程没有被终止以及为什么它们仍然处于 ESTABLISHED 模式(根据 netstat 命令)

最佳答案

进程数量增加以及套接字处于已建立状态的原因有多种。

典型的错误是为每个消息/连接/注册生成一个子进程,而不是重用现有的连接。特别是涉及到定时器回调

例如,

c - register for timer callback -> server
c -> spawn a process to receive the reply and listen on receive socket
c - register for timer callback -> server -> server
c -> spawn a process to receive the reply and listen on receive socket

应该是

c - register for timer callback -> server
c -> spawn a process to receive the reply and listen on receive socket
c - set the initialized flag
c - register for timer callback -> server
c -> if initialized do not spawn a process to receive the reply

关于linux - 已建立的Linux进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806729/

相关文章:

linux - 在多个文件范围内使用 grep 搜索字符串

c++ - 控制台上的陷阱退出

ios7 - 更新企业应用程序的 iOS 开发和 APNs 生产 [AirWatch]

ios - MDM 可以在 iOS 中发送警报和声音通知吗?

java - iOS MDM 注册 SCEP 规范和 PKIOperation 和操作=PKIOperation &message=MMIC

c++ - 如何让 GNU 调试器 gdb 在启动/重新启动时附加到守护进程?

linux - cat/sed 一个 iOS 可执行文件 - 在 macOS 上出错

linux - 为什么 php 进程在那里挂了将近 3 个月?

ios - 更新 iOS 设备上现有 MDM 配置文件中的 ServerURL

iphone - iPhone 移动应用程序管理