PHP在nginx服务器上加载缓慢

我有一个815K每月唯一用户的PHP应用程序,在我的开发机器上加载相当快(大约600毫秒的主页),并用于在生产服务器上快速加载。

我不是一个系统pipe理员,我只是一个开发人员,所以我开始search有关诊断服务器,我遵循这个stream程图

虽然最近stream量有所增加,但服务器资源似乎没有问题。

%Cpu(s): 8.3 us, 2.6 sy, 0.0 ni, 87.1 id, 0.0 wa, 0.0 hi, 0.3 si, 1.7 st 

我有足够的内存可用。

在缩小这个问题之后,我尝试了一些让我感兴趣的结果,我从浏览器中复制了html源代码,并将其传递给生产服务器中的test.html,并在不到800ms的时间内加载,我使用相同的html代码,它test.php,它需要大约6s的加载,这两个文件共享相同的HTML代码,没有数据库查询已在文件中执行,所以我认为这与我的nginx或PHPconfiguration的东西。

这是我的nginxconfiguration:

 server { listen 80; server_name site-name.com; root /home/user/site-name.com/public; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log /var/log/nginx/site-name.com-error.log error; error_page 404 /index.php; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ { expires 365d; } location ~ /\.ht { deny all; } } 

CSS,图像,HTML和JS文件加载速度快。

PHP的FPMconfiguration

我find了解决scheme,尽pipe我有可用的服务器资源,但是它们没有被使用,只有5个是允许创build的subprocess的最大数量。 我有很多没有被使用的内存。 所以我编辑了FPMconfiguration,在我的情况下,我编辑在: /etc/php/7.0/fpm/pool.d/www.conf

我做了一些计算,了解每个进程使用多less内存以及有多less内存,并更改了这些值:

 pm = ondemand pm.max_children = 125 pm.start_servers = pm.min_spare_servers = 15 pm.max_spare_servers = 25 

您可以查看本教程 ,了解有关计算值的更多信息。

现在它工作得非常快,最重的页面负载低于1秒,仍然有足够的内存。