1

php-fpm 占用 CPU 过高

 1 year ago
source link: https://mathpretty.com/15966.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

摘要本文主要介绍 php-fpm 的配置,从而尝试解决 CPU 占用过高的问题。同时也会包含 php 服务在 Ubuntu 下如何启动等。

最近发现服务器的 CPU 占用过高,甚至到了100%,导致所有的页面都无法打开。于是使用 htop 命令查看,发现 php-fpm 占用内存过高。于是对 php-fpm 的配置进行了一些修改。这里进行简单的记录。

php-fpm 设置

php-fpm 参数意思

这里介绍 php-fpm 中一些重要的参数的含义:

  • pm = dynamic,对于专用服务器,pm可以设置为static。这个配置表示如何控制子进程,选项有static和dynamic。
    • 如果选择static,则由pm.max_children指定固定的子进程数。
    • 如果选择dynamic,则由pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers 参数决定
  • pm.max_children,在同一时间最大的进程数
  • pm.start_servers,php-fpm 启动时开启的等待请求到来的进程数,默认值为:min_spare_servers + (max_spare_servers - min_spare_servers) / 2
  • pm.min_spare_servers,在空闲状态下,运行的最小进程数,如果小于此值,会创建新的进程
  • pm.max_spare_servers,在空闲状态下,运行的最大进程数,如果大于此值,会kill部分进程
  • pm.process_idle_timeout,空闲多少秒之后进程会被kill,默认为10s
  • pm.max_requests,每个进程处理多少个请求之后自动终止,可以有效防止内存溢出,如果为0则不会自动终止。

php-fpm 参数设置

找到 php-fpm.conf 的配置文件,例如下面的位置:

  1. /usr/local/php/etc/php-fpm.conf

主要对以下的设置进行修改。这里因为我设置了 pm = dynamic,因此主要对下面的参数进行了修改(可以将 max_children 调整的小一些):

  1. pm = dynamic
  2. pm.max_children = 20
  3. pm.start_servers = 10
  4. pm.min_spare_servers = 10
  5. pm.max_spare_servers = 20
  6. pm.max_requests = 500
  7. pm.process_idle_timeout = 10s
  8. request_terminate_timeout = 120
  9. request_slowlog_timeout = 0

Ubuntu 重启 php 服务

使用以下命令查看 PHP 服务的状态:

  1. sudo systemctl status php.service

如果该服务已经运行,则会显示“active (running)”字样。如果未运行,则会显示“inactive (dead)”字样。

如果 PHP 服务已经运行,你可以使用以下命令重启该服务

  1. sudo systemctl restart php.service

这将会重新启动 PHP 服务并加载任何新的配置更改。将 restart 更换为 stop 可以停止服务,更换为 start 则为开始服务。如果你希望在系统启动时自动启动 PHP 服务,可以使用以下命令将该服务添加到系统启动项中(替换为 enable):

  1. sudo systemctl enable php.service

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK