Heim > Backend-Entwicklung > PHP-Tutorial > Warum sollten Sie PHP-FPM optimieren? Wie optimieren?

Warum sollten Sie PHP-FPM optimieren? Wie optimieren?

青灯夜游
Freigeben: 2023-04-11 07:46:02
nach vorne
2947 Leute haben es durchsucht

Warum sollten Sie PHP-FPM optimieren? Wie optimieren?

Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? ist allgegenwärtig und kann als die am weitesten verbreitete Sprache für Internet-Webanwendungen bezeichnet werden.

Allerdings ist seine hohe Leistung nicht sehr bekannt, insbesondere wenn es um Systeme mit hoher Parallelität geht. Aus diesem Grund wird es für solche spezifischen Anwendungsfälle von Sprachen wie Node (ja, ich weiß, es ist keine Sprache), Go und Elixir übernommen.

Dennoch gibt es viele Dinge, die Sie tun können, um die Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Leistung auf Ihrem Server zu verbessern. Dieser Artikel konzentriert sich auf php-fpm, die Standardkonfiguration auf dem Server, wenn Sie Nginx verwenden. php-fpm 方面的内容,如果您使用Nginx,这是在服务器上的默认配置。

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

什么是 php-fpm?

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

Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?

上图是 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 项目的请求-响应生命周期(图片来源: ProinerTech)

在现代 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 应用中,「find file」部分即为 index.php 文件,它是在服务器配置文件中配置的用于处理所有请求的代理。

如今,Web 服务器究竟如何连接 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 正在进化,如果我们要深入研究所有细节,这篇文章的长度将激增。但粗略来说, 在 Apache 作为 Web 服务器首选的时间段,Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 是作为包含在服务器内部的模块。

所以每当一个请求被接收,服务器将开启一个新的进程, 它将自动包含 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 和执行请求。这个方法被称作mod_php,“Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?作为一个模块”的缩写。这种方法有其局限性,而 Nginx 和 php-fpm 克服了它。

php-fpm中,管理 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 的责任在于服务器内部的 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 程序。换言之, Web 服务器 (Nginx, 在本例中), 不在乎 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 在哪和怎样运行的,只要它知道如何发送和接收数据即可。如果需要,在这种情况下,您可以将Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?视为另一台服务器,它管理传入请求的某些子Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?进程(因此,我们将请求送到服务器,该请求由服务器接收并传递到服务器 — —太疯狂了!:-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;
    }
Nach dem Login kopieren

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

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

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

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

流程图如下:

Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?

Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 和 Nginx 如何协同工作? (图片来源:数据狗)

到目前为止都不错, 那么关键问题来了:Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM到底是什么呢?

Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 中的 FPM

Wenn Sie wissen, was php-fpm ist, springen Sie bitte direkt zum Abschnitt „Optimierung“.

Was ist Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM?

Viele Entwickler sind nicht sehr an DevOps-Wissen interessiert, und selbst diejenigen, die sich dafür interessieren, kennen nur sehr wenige die zugrunde liegenden Prinzipien. Interessanterweise ist Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? nicht der erste Dienst, der die Anfrage verarbeitet, wenn der Browser eine Anfrage an einen Server sendet. Stattdessen sind HTTP-Server, Apache und Nginx, die beiden wichtigsten. Der „Webserver“ entscheidet, wie er mit Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? kommuniziert und übergibt dann den Anforderungstyp, die Daten und die Header-Informationen an den Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Prozess.

Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?

Das Bild oben ist die Anfrage für die Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Projekt – Antwortlebenszyklus (Bildquelle: ProinerTech) 🎜🎜In modernen Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Anwendungen ist der Teil „Datei suchen“ die Datei index.php, die in der Serverkonfigurationsdatei für die Verarbeitung aller konfiguriert ist Anfragen-Agent. 🎜🎜Die genaue Art und Weise, wie Webserver eine Verbindung zu Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? herstellen, entwickelt sich heutzutage weiter, und wenn wir in alle Details eintauchen würden, würde die Länge dieses Artikels explodieren. Aber grob gesagt war Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? zu der Zeit, als Apache der Webserver der Wahl war, als Modul in den Server integriert. 🎜🎜Wenn also eine Anfrage eingeht, startet der Server einen neuen Prozess, der automatisch Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? enthält und die Anfrage ausführt. Diese Methode heißt mod_php, kurz für „Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? als Modul“. Dieser Ansatz hat seine Grenzen, aber Nginx und php-fpm überwinden diese. 🎜🎜In php-fpm liegt die Verantwortung für die Verwaltung von Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? beim Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Programm innerhalb des Servers. Mit anderen Worten: Dem Webserver (in diesem Fall Nginx) ist es egal, wo oder wie Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? ausgeführt wird, solange er weiß, wie er Daten sendet und empfängt. Bei Bedarf können Sie in diesem Fall Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? als einen weiteren Server behandeln, der einige Sub-Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Prozesse für eingehende Anfragen verwaltet (also senden wir die Anfrage an den Server, die vom Server empfangen und an den Server weitergeleitet wird – das ist verrückt! :- P). 🎜🎜Wenn Sie Nginx verwendet haben, sehen Sie diese Codes: 🎜
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?'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
Nach dem Login kopieren
Nach dem Login kopieren
🎜Für diese Zeile: fastcgi_pass unix:/run/php/php7.2-fpm.sock; code>, der Nginx anweist, über den socket von php7.2-fpm.sock mit dem Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Prozess zu kommunizieren. Für jede eingehende Anfrage schreibt Nginx also Daten in diese Datei und sendet sie nach Erhalt der Ausgabe zurück an den Browser. 🎜🎜Ich muss noch einmal betonen, dass dies nicht die vollständigste oder genaueste Anleitung zur Ausführung ist, aber für die meisten DevOps-Aufgaben völlig korrekt. 🎜🎜Nachdem wir das geklärt haben, schauen wir uns noch einmal an, was wir bisher gelernt haben: 🎜
  • Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? empfängt vom Browser gesendete Anfragen nicht direkt. Webserver wie Nginx fangen es zuerst ab.
  • Der Webserver weiß, wie er sich mit dem Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Prozess verbindet und alle Anforderungsdaten an Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? weiterleitet (alles einfügt).
  • Sobald Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? seine Aufgaben erledigt hat, sendet es die Antwort zurück an den Webserver, der sie dann an den Client (in den meisten Fällen den Browser) zurücksendet.
🎜Das Flussdiagramm sieht wie folgt aus:🎜🎜Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 🎜🎜Wie arbeiten Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? und Nginx zusammen? (Bildquelle: Data Dog)🎜🎜So weit, so gut, hier kommt die entscheidende Frage: Was genau ist Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM?🎜🎜FPM steht in Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? für „Fast Process Manager“. Eine ausgefallene Erklärung ist, dass es sich bei dem auf dem Server ausgeführten Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? nicht um einen einzelnen Prozess handelt, sondern um eine Reihe von Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-Prozessen, die von diesem FPM-Prozessmanager erzeugt, gesteuert und beendet werden. An diesen Prozessmanager leitet der Webserver die Anfrage weiter. 🎜🎜Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM ist ein ganzer Kaninchenbau für sich, also zögern Sie nicht, das zu erkunden, wenn Sie möchten, aber für unsere Zwecke werden diese Erklärungen ausreichen. ?🎜🎜🎜Warum sollten wir Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren?🎜🎜🎜Warum sollten wir im Allgemeinen unter normalen Betriebsbedingungen eine Optimierung in Betracht ziehen? Warum nicht alles so lassen, wie es ist? 🎜🎜Ironischerweise gebe ich generell Ratschläge für die meisten Anwendungsfälle. Wenn Ihr Setup gut funktioniert und Sie keinen speziellen Anwendungsfall haben, verwenden Sie die Standardeinstellungen. Wenn Sie jedoch über eine einzige Maschine hinaus skalieren möchten, ist es wichtig, die maximale Rechenleistung aus einer einzelnen Maschine herauszuholen, da Sie dadurch Ihre Serverausgaben halbieren (oder mehr!) können. 🎜

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

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

如何优化 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM ?

php-fpm 的配置文件在不同服务器上的位置可能不同,因此您需要做一些调查来确定它的位置。在 UNIX 上,你可以使用 find 命令。在我的 Ubuntu 上,它的路径是 /etc/php/7.2/fpm/php-fpm.conf 。当然,7.2是我正在运行的 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 版本。

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

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

; All relative paths in this configuration file are relative to Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?'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
Nach dem Login kopieren
Nach dem Login kopieren

很明显:这一行 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
Nach dem Login kopieren

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

这听起来可能不够稳健,但是 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 是一个短暂的进程,它会泄漏内存,所以在出现高故障时重新启动主进程可以解决很多问题。

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

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

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

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

; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; 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's group
;       will be used.
user = www-data
group = www-data
Nach dem Login kopieren

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

最后,我们到达了问题的根源,流程管理器 (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
Nach dem Login kopieren

那么,这里的 「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 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' 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.
Nach dem Login kopieren

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

  • Static: 无论什么情况,都会保持一个固定的Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?进程数量。
  • Dynamic: 我们需要指定php-fpm在任何给定时间点会保持活动的最小以及最大进程数量。
  • ondemand: 按照需求创建和销毁进程。

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

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

另一方面, 大流量 或者必须快速响应的网站将在这种情况下被惩罚。 最好避免创建新的 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? 进程的额外开销,使其成为池的一部分并对其进行监控。

使用 pm = static 固定子进程的数量,使最大的系统资源用于服务请求而不是管理 Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?。假如你确定走这条路,注意它有其指导方针和陷阱.关于它的一篇相当密集但非常有用的文章是 这篇 。

写在最后

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

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

Versuchen Sie gleichzeitig, die Ergebnisse nicht so dramatisch wie möglich zu machen. Ja, Sie können eine bessere Leistung erzielen, indem Sie Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? von Grund auf neu kompilieren und alle unnötigen Module entfernen, aber dieser Ansatz ist in einer Produktionsumgebung nicht sinnvoll genug. Die ganze Idee bei der Optimierung besteht darin, zu sehen, ob Ihre Anforderungen von den Standards abweichen (das ist selten der Fall!) und bei Bedarf kleinere Änderungen vorzunehmen.

Englische Originaladresse: https://geekflare.com/php-fpm-optimization/

Empfohlenes Lernen: „Warum sollten Sie Warum sollten Sie Warum sollten Sie PHP-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren?-FPM optimieren? Wie optimieren? Video Tutorial

Das obige ist der detaillierte Inhalt vonWarum sollten Sie PHP-FPM optimieren? Wie optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Verwandte Tutorials
Beliebte Empfehlungen
Aktuelle Kurse
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage