PHP进程加载并卡住所有CPU

标签 php centos overloading cpanel

我有一个 PHP 脚本,它使我能够拥有一个社交网络和类似的东西。

通常,没有任何问题,我的服务器是一个 VPS:

  • 2.4 GHz CPU
  • 4芯
  • 8 GB 内存
  • 150GB固态硬盘
  • 带有 cPanel 的 CentOS 7.1。

  • 问题是,通常服务器可以维持 30-40% 的 CPU 负载,大约 30 个并发用户。但有时,我不知道是什么原因,负载真的很高,一直到 98-100%。即使用户注销并且网站中只有 3-4 人,服务器负载始终保持在 98-100%,直到我不重新启动服务器。

    所以,我注意到,使用 顶部 通过 SSH 命令,在 PHP 中创建一个进程,用户作为 webspace 的所有者(通过 cPanel 创建)并作为命令 PHP。此过程的负载为 20% 到 27%。

    事实是,这些 PHP 进程中的更多创建时间越长。
    例如,在 30 分钟后,有另一个 PHP 进程与第一个进程具有相同的特性。两者加在一起,占用了 50-60% 的 CPU 负载。更多的时间过去,更多的进程被创建,最多 4 个这样的进程。 (是因为我的 CPU 有 4 个内核吗?)。

    如果我通过 杀死这些进程杀死 [pid] 在 1-2 分钟内,即使有 10-15 个并发用户,服务器也会恢复到 3%。

    问题是什么?它是严格的 php 文件相关的还是什么?我什至尝试在网站上进行事件以检查这些 PHP 进程(甚至无用)启动的操作。因为如果我杀了他们,网站会继续运行得很好!

    可能是什么问题呢?

    有一个CPU使用率屏幕:
    Screenshot

    谢谢你们。

    最佳答案

    如果一个进程正在进行大量的 I/O 操作,如数据库调用等,它会大大增加 CPU 负载。在您的情况下,您可以确定导致这种高负载的过程。注意到负载明显增加了时间,您应该仔细查看 PHP 脚本是否存在内存泄漏、大量 session 、大量嵌套循环以及 IO 拉入其间,并尝试找出原因。祝你好运

    关于PHP进程加载并卡住所有CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103255/

    相关文章:

    kubernetes - 如何生成配置以连接到远程 Kubernetes 主机

    haskell - Haskell 中的重载(show 和 num)

    PHP在带有URL的字符串中添加空格

    php 将 JSON 数组键转换为整数

    centos - 克隆的虚拟机(Vmware 工作站)上没有互联网

    linux - 如何通过命令行在 Linux 中打开独特的、每用户的 Firefox 实例?

    java - 关于向上转换和重载方法的混淆

    .net - 如何从 Powershell 调用使用 C# 输出参数的重载 .NET 函数?

    PHP:PEAR 是否真的安装,还是只是下载并解压 PHP 代码库?

    php - 使用 PHP substr 从字符串中获取 "at most"最后 n 个字符?