我有一个运行在 CloudLinux 6.6 x86_64 标准上的托管 VPS。
它有几个使用 CPanel 运行 MySQL、PHP 和 Apache 的网站。
我正在开发一个需要管理 PID 并检测其状态的 PHP 系统。
我smallint
在 MySQL 数据库上定义了一个字段(2 个字节)来存储 PID。
但是今天,我注意到了一些奇怪的事情:
该服务正在“采取行动”,并说实际上任务完成时该进程没有运行。
我查了一下,有 PID 高达997282(迄今为止最高)的进程。
我试图在谷歌上查看这个,但没有任何帮助。
我只找到有关/proc/sys/kernel/pid_max
我用来读取它的文件的信息,并从那里获取最大 PID,即1048576
.
PID 超过 65535 是否正常?
有点不相关:当 PID 超过 10000 时,服务器是否会尖叫着重启?
您可能需要的任何其他信息,我愿意提供到没有秘密泄露的某个点。
PID 被回收。当一个进程退出时,它的 PID 稍后可以被另一个进程使用,因此您不会“耗尽”或仅仅因为存在接近最大值的 PID 而需要重新启动但请参见下文...
除非有必要,否则我不会修改这个 sysctl 参数;例如,在具有大量短期进程的繁忙系统或具有长时间运行进程的多线程应用程序上工作。
通常我设置为 99999 或在某些情况下设置为999999 ...
在一个值得注意的案例中,我有一个数据库服务器耗尽了进程 ID。PID 被平均 9,000-10,000 个并发数据库连接耗尽。每个都产生了几个线程,达到了操作系统中配置的 32,768 个限制。由于高运行队列,这提高了系统平均负载。
提高 PID 最大值可减轻压力。
编辑:
如果这是 VPS,我认为主机的 pid_max 值会很高,因为 PID 在系统上的来宾之间共享。这可能是为了提供净空。
32 位系统的理论最大 pid 数为 32768,64 位系统为 4194304。您可以在问题 ( /proc/sys/kernel/pid_max
) 中提到的文件中定义低于此数字的另一个上限。
如果pid_max
达到(通过运行进程)系统不允许创建新进程,直到现有进程退出并被清理。所以你没有问题,除非你的系统有 1048576 个正在运行的进程。
归档时间: |
|
查看次数: |
7022 次 |
最近记录: |