Apache加载一个虚拟主机的速度比另一个虚拟机更快

时间:2020-02-04 23:10:10

标签: linux apache vhosts

我有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>

0 个答案:

没有答案