我有2个虚拟主机,我在CentOS 7上使用Apache 2.4.6,带有事件MPM。我还将PHP-FPM与UNIX域套接字一起使用,每个PHP配置都有其自己的套接字文件。虚拟主机配置文件几乎相同。
一个网站的加载速度比另一个网站慢,例如:
简单的“联系”页面在慢速虚拟主机上加载 1.19 秒,在快速虚拟主机上加载 0.56 秒。造成这种差异的根本原因是什么?
我的服务器有1个CPU内核,但是我总共看到6个httpd进程,其中一个是父进程,还有5个工作进程。这是正常的还是应该只有1个工作进程?
编辑:我已经测试了一个简单的html页面(page.html),该页面只有几行HTML,没有PHP,因此完全不涉及PHP解释器。问题仍然存在。因此,PHP不是问题。
编辑:我没有使用.htaccess文件。
这是我的虚拟主机配置。首先是慢速虚拟主机:
<IfModule mod_ssl.c>
<VirtualHost PUBLIC-IP:443>
ServerName www.domain1.tld
ServerAlias domain1.tld
DocumentRoot /var/www/hosts/domain1/html
ErrorLog /var/www/hosts/domain1/logs/error_log
CustomLog /var/www/hosts/domain1/logs/access_log combined env=!forwarded
CustomLog /var/www/hosts/domain1/logs/access_log proxy env=forwarded
DirectoryIndex index.php index.html
Options -Indexes +FollowSymlinks
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain1.tld/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain1.tld/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain1.tld/chain.pem
<FilesMatch \.php$>
<If "-f %{SCRIPT_FILENAME}">
SetHandler "proxy:unix:/var/run/php-fpm/domain1.tld.sock|fcgi://domain1.tld"
</If>
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1
RewriteRule ^/page$ /page.php [L]
...
...
a few rewrite rules
...
<FilesMatch ".(js|css|ico|jpg|jpeg|png|gif|eot|woff|otf|ttf|svg)$">
Header set Cache-Control "max-age=86400, public"
</FilesMatch>
<FilesMatch "(\.js|\.css)$">
RequestHeader edit "If-None-Match" "^(.*)-gzip\"$" "$1\""
</FilesMatch>
<Directory "/var/www/hosts/domain1/html">
AllowOverride None
</Directory>
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</VirtualHost>
</IfModule>
现在是快速虚拟主机:
<IfModule mod_ssl.c>
<VirtualHost PUBLIC-IP:443>
ServerName www.domain2.tld
ServerAlias domain2.tld
DocumentRoot /var/www/hosts/domain2/html
ErrorLog /var/www/hosts/domain2/logs/error_log
CustomLog /var/www/hosts/domain2/logs/access_log combined env=!forwarded
CustomLog /var/www/hosts/domain2/logs/access_log proxy env=forwarded
DirectoryIndex index.php index.html
Options -Indexes +FollowSymlinks
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain2.tld/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain2.tld/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain2.tld/chain.pem
<FilesMatch \.php$>
<If "-f %{SCRIPT_FILENAME}">
SetHandler "proxy:unix:/var/run/php-fpm/domain2.tld.sock|fcgi://domain2.tld"
</If>
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1
RewriteRule ^/page$ /page.php [L]
...
...
a few rewrite rules
...
<FilesMatch ".(js|css|ico|jpg|jpeg|png|gif|eot|woff|otf|ttf|svg)$">
Header set Cache-Control "max-age=86400, public"
</FilesMatch>
<FilesMatch "(\.js|\.css)$">
RequestHeader edit "If-None-Match" "^(.*)-gzip\"$" "$1\""
</FilesMatch>
<Directory "/var/www/hosts/domain2/html">
AllowOverride None
</Directory>
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</VirtualHost>
</IfModule>