如何读取 php5-fpm 配置以及如何优化我的配置?

如何读取 php5-fpm 配置以及如何优化我的配置?

这是我当前的 php5-fpm 配置

[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = www-data
group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 25
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 2500
pm.status_path = /php-status
slowlog = log/$pool.log.slow
chdir = /
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected]
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
ENDFILECONTENT

我更擅长开发而不是操作,所以请假设我对 Linux 和一般的服务器管理知识一无所知。

我的 Linux 机器是

Ubuntu 12.10 (Quantal Quetzal)  1024 MB RAM, 40 GB Disk from Rackspace.

我的目的是将它用于在 cakephp 2.3 上运行的单个网站

现在,我在同一台服务器上运行 Jenkins 以帮助在服务器上持续部署应用程序代码。

一旦我们有足够的流量,我打算将 Jenkins 移到单独的服务器。

目前我还没有安装Jenkins,但是我已经安装了Php5-fpm和Nginx。安装php5-fpm后,内存使用率从4%上升到了41%。

我尚未将我的应用程序代码移至该服务器,也尚未在服务器上安装 Jenkins。

我的问题是:

  1. 我如何读取我设置的 php5-fpm 配置,从 pm 到 pm.status_path?现在这是一个独立的问题这里
  2. 如果我更改某些设置,尤其是 pm.max_children,会有什么影响?
  3. 考虑到我打算安装 Jenkins 并运行一个网站,我该如何优化我的设置?如果我运行两个网站怎么办?

答案1

  1. 呃。。。看看手册?http://php.net/manual/en/install.fpm.configuration.php

  2. 即使您将最大子节点数设置得太高,如果您的服务器可以在保持低负载的情况下毫无问题地处理请求,也不会发生任何事情。因为您永远不会达到最大子节点数。但是,如果您的子节点数太高,并且您收到的请求超出了您的处理能力,php-fpm 将占用所有内存并开始崩溃,甚至可能锁定系统。不过,这比 apache 占用所有内存要轻松得多(在这种情况下,apache 比病毒更糟糕......)。因此,如果请求/秒 > 可服务/秒,将达到最大子节点数,并且您希望该状态仍然稳定。

  3. 如果没有实际流量数据(或模拟负载),您就无法进行优化。您可以猜测,但这并不重要。我可以猜测您的最大子节点、启动服务器、最小备用服务器数量太高(可能确实如此),但如果没有实际流量,我可能是错的,也可能是无关紧要的。此外,它是一个 VPS,很难说存在最优(除了高度非最优),因为环境可能随时发生变化,而无需您的任何输入。例如,另一个用户可能会添加到节点并使用大量资源影响您,您到目前为止所做的所有优化都变得毫无意义。这不是什么奇怪现象,而是一种常见现象,因为 VPS 中的资源受非您影响的波动比受您影响的波动更大。

以下是一些关于优化的一般技巧。

  • 如果内存使用率过高,或者存在进入交换区的风险(交换区太慢!),则应减少最大子进程数。因此,如果 1 个子进程占用了 5% 的内存,则您不希望子进程数超过 20 个,因为这样会消耗掉所有内存甚至更多。不过请注意,平均值不是最大值。最大值越高,您可以同时服务的用户数就越多。
  • 如果您的软件或软件处理程序(即 php)存在内存泄漏,请减少最大请求数,以便快速重新创建子进程。您实际上只是想避免通过设置较大的数字来浪费创建新进程的时间。我个人建议不要超过 10K,以防 php-fpm 本身出现任何内存泄漏。
  • 如果您想要更稳定的行为(CPU优化),请设置较高的最小/最大备用服务器
  • 如果您想要更动态的行为(RAM 优化),请设置较低的最小/最大备用服务器

相关内容