목차
什么是 php-fpm?
如何优化 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM ?
백엔드 개발 PHP 튜토리얼 고성능 최적화 PHP-FPM이란 무엇입니까?

고성능 최적화 PHP-FPM이란 무엇입니까?

Aug 28, 2020 pm 05:11 PM
php-fpm

고성능 최적화 PHP-FPM이란 무엇입니까?

【관련 학습 권장 사항: php 그래픽 튜토리얼

고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?는 어디에나 있으며 인터넷 웹 애플리케이션에서 가장 널리 사용되는 언어라고 할 수 있습니다.

그러나 그 고성능은 잘 알려져 있지 않으며, 특히 동시성이 높은 시스템의 경우 더욱 그렇습니다. 그렇기 때문에 이러한 특정 사용 사례에서는 Node(예, 알고 있습니다. 언어가 아닙니다), Go 및 Elixir와 같은 언어가 이를 대체하고 있습니다.

서버의 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 성능을 향상시키기 위해 할 수 있는 일이 많이 있습니다. 이 기사에서는 Nginx를 사용하는 경우 서버의 기본 구성인 php-fpm에 중점을 둡니다. php-fpm 方面的内容,如果您使用Nginx,这是在服务器上的默认配置。

如果你知道 php-fpm 是什么,请直接跳到优化部分。

什么是 php-fpm?

许多开发人员对 DevOps 方面的知识不太感兴趣,即使是那些对此感兴趣的开发人员,也极少有人知道它的底层原理。有趣的是,当浏览器发送一个请求到运行 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 的服务器上时,고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 也不是最先进行处理请求的服务;而是,HTTP 服务器,Apache 和 Nginx 是其中最主要的两个。「web 服务器」决定如何与 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 进行通信,然后传递请求的类型,数据和头部信息到 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 进程。

고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?

上图是 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 项目的请求-响应生命周期(图片来源: ProinerTech)

在现代 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 应用中,「find file」部分即为 index.php 文件,它是在服务器配置文件中配置的用于处理所有请求的代理。

如今,Web 服务器究竟如何连接 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 正在进化,如果我们要深入研究所有细节,这篇文章的长度将激增。但粗略来说, 在 Apache 作为 Web 服务器首选的时间段,고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 是作为包含在服务器内部的模块。

所以每当一个请求被接收,服务器将开启一个新的进程, 它将自动包含 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 和执行请求。这个方法被称作mod_php,“고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?作为一个模块”的缩写。这种方法有其局限性,而 Nginx 和 php-fpm 克服了它。

php-fpm中,管理 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 的责任在于服务器内部的 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 程序。换言之, Web 服务器 (Nginx, 在本例中), 不在乎 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 在哪和怎样运行的,只要它知道如何发送和接收数据即可。如果需要,在这种情况下,您可以将고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?视为另一台服务器,它管理传入请求的某些子고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?进程(因此,我们将请求送到服务器,该请求由服务器接收并传递到服务器 — —太疯狂了!:-P)。

如果你用过Nginx,你会看到这些代码:

     location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
로그인 후 복사

对于这一行:fastcgi_pass unix:/run/php/php7.2-fpm.sock;,它告诉Nginx通过 php7.2-fpm.socksocket与php进程通信。因此,对于每个传入的请求,Nginx都通过这个文件写入数据,在接收到输出后,将其发送回浏览器。

我必须再次强调,对于如何运行这不是最完整或者最准确的,但对于大多数 DevOps 任务是完全准确的。

除此之外,让我们回顾一下到目前为止所学到的东西:

  • 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?不会直接接收浏览器发送的请求。像 Nginx 这种 Web 服务器首先会拦截它。
  • Web 服务器知道如何连接到고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?进程,并将所有请求数据(粘贴所有内容)传递到 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 上。
  • 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 完成其职责后,会将响应发送回 Web 服务器,然后将其发送回客户端(在大多数情况下为浏览器)。

流程图如下:

고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?

고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 和 Nginx 如何协同工作? (图片来源:数据狗)

到目前为止都不错, 那么关键问题来了:고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM到底是什么呢?

고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 中的 FPM

php-fpm이 무엇인지 아시는 경우 최적화 섹션으로 바로 이동하세요.

php-fpm이란 무엇인가요?

많은 개발자가 DevOps 지식에 그다지 관심이 없으며, 심지어 관심이 있는 사람들 중에서도 기본 원칙을 아는 개발자는 거의 없습니다. 흥미롭게도 브라우저가 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?를 실행하는 서버에 요청을 보낼 때 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?는 요청을 처리하는 첫 번째 서비스가 아니며 HTTP 서버, Apache 및 Nginx가 가장 중요한 서비스입니다. "웹 서버"는 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?와 통신하는 방법을 결정한 다음 요청 유형, 데이터 및 헤더 정보를 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로세스에 전달합니다.

고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?

위 사진은 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로젝트 - 응답 수명 주기(이미지 출처: ProinerTech) 🎜🎜최신 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 애플리케이션에서 "파일 찾기" 부분은 index.php 파일로, 모든 작업을 처리하도록 서버 구성 파일에 구성되어 있습니다. 에이전트를 요청합니다. 🎜🎜요즘에는 웹 서버가 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?에 연결하는 정확한 방법이 진화하고 있으며, 모든 세부 사항을 파고들면 이 기사의 길이가 엄청나게 길어질 것입니다. 하지만 대략적으로 말하면 Apache가 웹 서버로 선택되던 시절에는 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?가 서버 내에 모듈로 포함되어 있었습니다. 🎜🎜따라서 요청이 수신될 때마다 서버는 자동으로 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?를 포함하고 요청을 실행하는 새 프로세스를 시작합니다. 이 메소드는 "모듈로서의 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?"를 줄여서 mod_php라고 합니다. 이 접근 방식에는 한계가 있지만 Nginx와 php-fpm은 이를 극복합니다. 🎜🎜php-fpm에서 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 관리 책임은 서버 내부의 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로그램에 있습니다. 즉, 웹 서버(이 경우 Nginx)는 데이터를 보내고 받는 방법을 알고 있는 한 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?가 어디서 어떻게 실행되는지 상관하지 않습니다. 필요한 경우 이 경우 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?를 들어오는 요청에 대한 일부 하위 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로세스를 관리하는 또 다른 서버로 처리할 수 있습니다. 따라서 요청을 서버로 보내고, 요청은 서버에서 수신되어 서버로 전달됩니다. 정말 말도 안 돼요! :- 피). 🎜🎜Nginx를 사용한 경우 다음 코드가 표시됩니다: 🎜
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?'s install
; prefix (/usr). This prefix can be dynamically changed by using the
; '-p' argument from the command line.

;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;

[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /run/php/php7.2-fpm.pid

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; into a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = /var/log/php7.2-fpm.log
로그인 후 복사
로그인 후 복사
🎜이 줄의 경우: fastcgi_pass unix:/run/php/php7.2-fpm.sock;</code > code>는 Nginx에게 <code>php7.2-fpm.sock소켓을 통해 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로세스와 통신하도록 지시합니다. 따라서 들어오는 모든 요청에 ​​대해 Nginx는 이 파일을 통해 데이터를 쓰고 출력을 받은 후 이를 브라우저로 다시 보냅니다. 🎜🎜이것이 실행 방법에 있어서 가장 완전하거나 정확하지는 않지만 대부분의 DevOps 작업에 대해서는 완전히 정확하다는 점을 다시 강조해야 합니다. 🎜🎜이제 지금까지 배운 내용을 복습해 보겠습니다. 🎜
  • 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?는 브라우저에서 보낸 요청을 직접 받지 않습니다. Nginx와 같은 웹 서버가 먼저 이를 차단합니다.
  • 웹 서버는 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로세스에 연결하고 모든 요청 데이터를 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?에 전달(모든 것을 붙여넣기)하는 방법을 알고 있습니다.
  • 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?는 임무를 완료한 후 응답을 웹 서버로 다시 보낸 다음 다시 클라이언트(대부분의 경우 브라우저)로 보냅니다.
🎜흐름도는 다음과 같습니다.🎜🎜고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 🎜🎜고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?와 Nginx는 어떻게 함께 작동하나요? (이미지 출처: Data Dog)🎜🎜지금까지는 매우 좋았으므로 여기서 중요한 질문이 나옵니다. 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 정확히 무엇입니까?🎜🎜FPM은 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?에서 "Fast Process Manager"를 의미합니다. 멋진 설명은 서버에서 실행되는 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?가 단일 프로세스가 아니라 이 FPM 프로세스 관리자에 의해 생성, 제어 및 종료되는 수많은 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 프로세스라는 것입니다. 웹 서버가 요청을 전달하는 것은 바로 이 프로세스 관리자입니다. 🎜🎜고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM은 그 자체로 토끼굴이므로 원하는 경우 자유롭게 탐색해 보세요. 하지만 우리의 목적에는 이러한 설명으로 충분합니다. ?🎜🎜왜 php-fpm을 최적화해야 합니까?🎜🎜일반적으로 정상적인 작동 조건에서 최적화를 고려해야 하는 이유는 무엇입니까? 물건을 그대로 두는 것은 어떨까요? 🎜🎜아이러니하게도 저는 일반적으로 대부분의 사용 사례에 대해 조언을 제공합니다. 설정이 제대로 작동하고 특별한 사용 사례가 없다면 기본 설정을 사용하세요. 그러나 단일 시스템 이상으로 확장하려는 경우 단일 시스템에서 가장 많은 처리 능력을 짜내는 것이 필수적입니다. 서버 지출을 절반(또는 그 이상!)으로 줄일 수 있기 때문입니다. 🎜

要说明的另一件事情是,Nginx是为处理巨大的工作负载而构建的。 它能够同时处理成千上万的连接,但是如果您的고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?设置不合理,那么您将浪费很多资源,因为Nginx必须等待고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?完成当前处理之后才可以接受下一个请求,最终Nginx不能为您的服务提供任何优势!

所以,接下来让我们看看尝试优化 php-fpm 时我们到底要优化什么。

如何优化 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM ?

php-fpm 的配置文件在不同服务器上的位置可能不同,因此您需要做一些调查来确定它的位置。在 UNIX 上,你可以使用 find 命令。在我的 Ubuntu 上,它的路径是 /etc/php/7.2/fpm/php-fpm.conf 。当然,7.2是我正在运行的 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 版本。

下面是这个文件的前几行代码:

;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?&#39;s install
; prefix (/usr). This prefix can be dynamically changed by using the
; &#39;-p&#39; argument from the command line.

;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;

[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /run/php/php7.2-fpm.pid

; Error log file
; If it&#39;s set to "syslog", log is sent to syslogd instead of being written
; into a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = /var/log/php7.2-fpm.log
로그인 후 복사
로그인 후 복사

很明显:这一行 pid = /run/php/php7.2-fpm.pid 告诉我们哪个文件包含了 php-fpm 进程的进程 id。

我们还看到 /var/log/php7.2-fpm.logphp-fpm 存储日志的地方。

在这个文件中,像下面这样添加三个变量:

emergency_restart_threshold 10
emergency_restart_interval 1m
process_control_timeout 10s
로그인 후 복사

前两个设置是警告性的,它们告诉 php-fpm 进程,如果10个子进程在一分钟内失败,主 php-fpm 进程应该重新启动自己。

这听起来可能不够稳健,但是 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 是一个短暂的进程,它会泄漏内存,所以在出现高故障时重新启动主进程可以解决很多问题。

第三个选项是 process_control_timeout,它告诉子进程在执行从父进程接收到的信号之前需要等待这么长的时间。这个设置是非常有用的。例如,当父进程发送终止信号时,子进程正在处理某些事情的时候。十秒的时间,他们会有一个更好的机会完成任务并且优雅地退出。

令人惊讶的是,这 不是 php-fpm 的核心配置!这是因为,为了 web 请求服务,php-fpm 创建了一个新的进程池,它将具有一个单独的配置。在我的例子中,进程池的名称是 www,我想编辑的文件是 /etc/php/7.2/fpm/pool.d/www.conf

让我们来看看文件的内容:

; Start a new pool named &#39;www&#39;.
; the variable $pool can be used in any directive and will be replaced by the
; pool name (&#39;www&#39; here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - &#39;access.log&#39;
; - &#39;slowlog&#39;
; - &#39;listen&#39; (unixsocket)
; - &#39;chroot&#39;
; - &#39;chdir&#39;
; - &#39;php_values&#39;
; - &#39;php_admin_values&#39;
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user&#39;s group
;       will be used.
user = www-data
group = www-data
로그인 후 복사

快速浏览一下上面代码片段的末尾,您就会明白为什么服务器进程以 www-data 的形式运行了。如果您在设置网站时遇到文件权限问题,您可能要将目录的所有者或组更改为 www-data,从而允许고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?进程写入日志文件和上传文档等。

最后,我们到达了问题的根源,流程管理器 (pm) 设置。一般情况下,默认值是这样的:

pm = dynamic
pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200
로그인 후 복사

那么,这里的 「dynamic(动态)」是什么意思呢?我认为官方文档最好地解释了这一点(我的意思是,这应该已经是您正在编辑的文件的一部分,但是我在这里复制了它,以防它不是):

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives. With this process management, there will be
;             always at least 1 children.
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in &#39;idle&#39;
;                                    state (waiting to process). If the number
;                                    of &#39;idle&#39; processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in &#39;idle&#39;
;                                    state (waiting to process). If the number
;                                    of &#39;idle&#39; processes is greater than this
;                                    number then some children will be killed.
;  ondemand - no children are created at startup. Children will be forked when
;             new requests will connect. The following parameter are used:
;             pm.max_children           - the maximum number of children that
;                                         can be alive at the same time.
;             pm.process_idle_timeout   - The number of seconds after which
;                                         an idle process will be killed.
; Note: This value is mandatory.
로그인 후 복사

由此可见,有三个可用值:

  • Static: 无论什么情况,都会保持一个固定的고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?进程数量。
  • Dynamic: 我们需要指定php-fpm在任何给定时间点会保持活动的最小以及最大进程数量。
  • ondemand: 按照需求创建和销毁进程。

那这些设置有什么影响呢?

简而言之,如果你有个小流量的网站,“dynamic”设置在大多数时间内都是一种资源的浪费。假设你的pm.min_spare_servers设置成了3,那会有三个고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?进程会被创建并保持运行,甚至是网站没有流量时。这种情况下,“ondemand” 就是个更好的选择, 可以让系统决定何时启动新的进程。

另一方面, 大流量 或者必须快速响应的网站将在这种情况下被惩罚。 最好避免创建新的 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까? 进程的额外开销,使其成为池的一部分并对其进行监控。

使用 pm = static 固定子进程的数量,使最大的系统资源用于服务请求而不是管理 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?。假如你确定走这条路,注意它有其指导方针和陷阱.关于它的一篇相当密集但非常有用的文章是 这篇 。

写在最后

由于有关网络性能的文章可能会引发争论或使人们感到困惑,因此在结束本文之前,我觉得需要讲几句话。 性能调优既涉及系统知识,也涉及猜测和技巧。

即使您完全了解 php-fpm 的所有设置,也无法保证成功。 如果您不了解 php-fpm 的存在,那么您就不必浪费时间担心它。 继续做您已经在做的事情并继续下去。

동시에 결과를 최대한 드라마틱하게 만들지 않도록 노력하세요. 예, 고성능 최적화 고성능 최적화 고성능 최적화 PHP-FPM이란 무엇입니까?-FPM이란 무엇입니까?-FPM이란 무엇입니까?를 처음부터 다시 컴파일하고 불필요한 모듈을 모두 제거하면 더 나은 성능을 얻을 수 있지만 이 접근 방식은 프로덕션 환경에서는 충분히 합리적이지 않습니다. 무언가를 최적화하는 전체 아이디어는 요구 사항이 기본값과 다른지 확인하고(거의 그렇지 않음!) 필요한 경우 작은 변경을 수행하는 것입니다.

관련 학습 권장 사항: php 프로그래밍(동영상)

위 내용은 고성능 최적화 PHP-FPM이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

고성능 튜닝을 위해 php-fpm을 사용하는 방법 고성능 튜닝을 위해 php-fpm을 사용하는 방법 Jul 08, 2023 am 11:30 AM

고성능 튜닝을 위해 php-fpm을 사용하는 방법 PHP는 웹 애플리케이션 및 동적 웹 사이트를 개발하는 데 널리 사용되는 매우 널리 사용되는 서버 측 스크립팅 언어입니다. 그러나 트래픽이 증가하면 PHP 애플리케이션의 성능이 저하될 수 있습니다. 이 문제를 해결하기 위해 고성능 튜닝을 위해 php-fpm(FastCGIProcessManager)을 사용할 수 있습니다. 이 기사에서는 php-fpm을 사용하여 PHP 애플리케이션의 성능을 향상시키는 방법을 소개하고 코드 예제를 제공합니다. 하나,

PrestaShop 애플리케이션의 성능을 향상시키기 위해 PHP-FPM 최적화를 사용하는 방법 PrestaShop 애플리케이션의 성능을 향상시키기 위해 PHP-FPM 최적화를 사용하는 방법 Oct 05, 2023 pm 12:33 PM

PrestaShop 애플리케이션의 성능을 향상시키기 위해 PHP-FPM 최적화를 사용하는 방법 전자상거래 산업의 급속한 발전으로 PrestaShop은 많은 판매자가 선택하는 전자상거래 플랫폼이 되었습니다. 그러나 매장 규모가 커지고 방문 횟수가 늘어나면서 PrestaShop 애플리케이션에 성능 병목 현상이 발생할 수 있습니다. PrestaShop 애플리케이션의 성능을 향상시키기 위한 일반적인 방법은 PHP-FPM을 사용하여 애플리케이션의 처리 기능을 최적화하고 향상시키는 것입니다. PHP-FPM(FastCGI

PHP-FPM 최적화를 사용하여 WooCommerce 애플리케이션의 성능을 향상시키는 방법 PHP-FPM 최적화를 사용하여 WooCommerce 애플리케이션의 성능을 향상시키는 방법 Oct 05, 2023 am 08:24 AM

PHP-FPM 최적화를 사용하여 WooCommerce 응용 프로그램의 성능을 향상시키는 방법 개요 WooCommerce는 WordPress 웹 사이트에서 온라인 상점을 만들고 관리하기 위한 매우 인기 있는 전자 상거래 플러그인입니다. 그러나 매장이 성장하고 트래픽이 증가하면 WooCommerce 앱이 느려지고 불안정해질 수 있습니다. 이 문제를 해결하기 위해 PHP-FPM을 사용하여 WooCommerce 애플리케이션의 성능을 최적화하고 향상시킬 수 있습니다. PHP-FP 란 무엇입니까?

php-fpm 연결 풀을 사용하여 데이터베이스 액세스 성능 향상 php-fpm 연결 풀을 사용하여 데이터베이스 액세스 성능 향상 Jul 07, 2023 am 09:24 AM

데이터베이스 액세스 성능을 향상시키기 위한 php-fpm 연결 풀 사용 개요: 웹 개발에서 데이터베이스 액세스는 가장 빈번하고 시간이 많이 걸리는 작업 중 하나입니다. 전통적인 방법은 각 데이터베이스 작업에 대해 새 데이터베이스 연결을 생성한 다음 사용 후 연결을 닫는 것입니다. 이 방법을 사용하면 데이터베이스 연결이 자주 설정되고 닫혀 시스템 오버헤드가 증가합니다. 이 문제를 해결하기 위해 php-fpm 연결 풀 기술을 사용하여 데이터베이스 액세스 성능을 향상시킬 수 있습니다. 연결 풀의 원리: 연결 풀은 일정 수의 데이터베이스를 결합하는 캐싱 기술입니다.

php-fpm 튜닝 방법에 대한 자세한 설명 php-fpm 튜닝 방법에 대한 자세한 설명 Jul 08, 2023 pm 04:31 PM

PHP-FPM은 더 나은 PHP 성능과 안정성을 제공하기 위해 일반적으로 사용되는 PHP 프로세스 관리자입니다. 그러나 부하가 높은 환경에서는 PHP-FPM의 기본 구성이 요구 사항을 충족하지 못할 수 있으므로 이를 조정해야 합니다. 이 기사에서는 PHP-FPM의 튜닝 방법을 자세히 소개하고 몇 가지 코드 예제를 제공합니다. 1. 프로세스 수를 늘리십시오. 기본적으로 PHP-FPM은 요청을 처리하기 위해 소수의 프로세스만 시작합니다. 부하가 높은 환경에서는 프로세스 수를 늘려 PHP-FPM의 동시성을 높일 수 있습니다.

Phalcon 애플리케이션의 성능을 향상시키기 위해 PHP-FPM 최적화를 사용하는 방법 Phalcon 애플리케이션의 성능을 향상시키기 위해 PHP-FPM 최적화를 사용하는 방법 Oct 05, 2023 pm 01:54 PM

Phalcon 애플리케이션의 성능을 최적화하고 향상시키기 위해 PHP-FPM을 사용하는 방법 소개: Phalcon은 고성능 PHP 프레임워크로, PHP-FPM과 결합하면 애플리케이션 성능을 더욱 향상시킬 수 있습니다. 이 글에서는 PHP-FPM을 사용하여 Phalcon 애플리케이션의 성능을 최적화하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. PHP-FPMPHP-FPM(PHPFastCGIProcessManager)이란 웹 서버와 독립적인 PHP 프로세스입니다.

우분투에 php-fpm이 없으면 어떻게 해야 할까요? 우분투에 php-fpm이 없으면 어떻게 해야 할까요? Feb 03, 2023 am 10:51 AM

php-fpm이 없는 Ubuntu용 솔루션: 1. "sudo apt-get" 명령을 실행하여 PHP의 소스 주소를 추가합니다. 2. php7 패키지가 있는지 확인합니다. 3. "sudo apt-get"을 실행하여 PHP를 설치합니다. install" 명령; 4. nginx 요청을 처리하기 위해 포트 9000에서 수신 대기하도록 구성을 수정합니다. 5. "sudo service php7.2-fpm start"를 통해 "php7.2-fpm"을 시작합니다.

php-fpm이란 무엇입니까? 성능을 향상시키기 위해 최적화하는 방법은 무엇입니까? php-fpm이란 무엇입니까? 성능을 향상시키기 위해 최적화하는 방법은 무엇입니까? May 13, 2022 pm 07:56 PM

php-fpm이란 무엇입니까? 다음 기사에서는 php-fpm을 이해하고 php-fpm을 최적화할 때 최적화해야 할 사항을 소개합니다. 모든 사람에게 도움이 되기를 바랍니다.

See all articles