Ich führe mehrere Projekte auf einer Maschine aus. Nachfolgend finden Sie alle Informationen
zur Nginx-Konfiguration, ob PHP
das Projekt FastCGI-Cache verwendet, Node.js
ob das Projekt verwendet wird proxy_pass
und ob alle Projekte verwendet werden gzip
.
Ich bin neu in der Serverwartung, mein Problem ist, dass alle Projekte Tests durchführen, z. B.http://www.webpagetest.org/
Die Zeit bis zum ersten Byte ist so hoch, ich habe ein paar Wochen gesucht und kann den Grund nicht finden. Und ich frage mich, ob diese Ergebnisse auf einen Maschinenengpass zurückzuführen sind oder ob ich etwas übersehen habe. Ich freue mich über alle Vorschläge!!
domain1.com
- 690 ms First Byte Time, 6 ms Target First Byte Time
sub.domain2.com
- 509 ms First Byte Time, 6 ms Target First Byte Time
domain4.com
-1772 ms First Byte Time, 9 ms Target First Byte Time
Hintergrundinformation
linode
1 GB RAM
1 CPU Core
24 GB SSD Storage
2 TB Transfer
40 Gbps Network In
125 Mbps Network Out
nginx
PHP
Node.js
PostgreSQL
Nginx-Konfiguration
server {
listen 80;
server_name domain1.com www.domain1.com;
access_log /var/log/nginx/domain1.com.access.log;
root /var/www/html/domain1.com;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
client_max_body_size 1G;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
# cache
fastcgi_cache domain1.com;
fastcgi_cache_valid 200 60m;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_key $scheme$request_method$host$request_uri;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
}
}
server {
listen 80;
server_name sub.domain1.com www.sub.domain1.com;
access_log /var/log/nginx/sub.domain1.com.access.log;
root /var/www/html/sub.domain1.com;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
client_max_body_size 1G;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
# cache
fastcgi_cache sub.domain1.com;
fastcgi_cache_valid 200 60m;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_key $scheme$request_method$host$request_uri;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
}
}
server {
listen 80;
server_name domain2 www.domain2;
access_log /var/log/nginx/domain2.access.log;
location / {
proxy_pass http://127.00.0.1:8001/;
}
}
server {
listen 80;
server_name sub.domain2 www.sub.domain2;
access_log /var/log/nginx/sub.domain2.access.log;
location ~ ^/sitemap/(.*)$ {
root /var/www/html/sub.domain2/app/Sitemap/SitemapGz;
}
location /robots.txt {
alias /var/www/html/sub.domain2/app/robots.txt;
}
location ~ ^/(images/|javascripts/|stylesheets/|fonts) {
root /var/www/html/sub.domain2/app/assets;
access_log off;
expires max;
}
location / {
set $fixed_destination $http_destination;
if ( $http_destination ~* ^https(.*)$ )
{
set $fixed_destination http$1;
}
proxy_pass http://127.00.0.1:8002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Destination $fixed_destination;
client_max_body_size 32M;
client_body_buffer_size 512k;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
server {
listen 80;
server_name domain3.io www.domain3.io;
access_log /var/log/nginx/domain3.io.access.log;
location / {
proxy_pass http://127.00.0.1:8003/;
}
}
server {
listen 80;
server_name domain4.com www.domain4.com;
access_log /var/log/nginx/domain4.com.access.log;
root /var/www/html/domain4.com;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
client_max_body_size 1G;
location ~ ^/sitemap/(.*)$ {
root /var/www/html/domain4.com/app/Sitemap/SitemapGz;
}
location /robots.txt {
alias /var/www/html/domain4.com/app/robots.txt;
}
location ~ ^/(images/|javascripts/|stylesheets/|fonts) {
root /var/www/html/domain4.com/app/assets;
access_log off;
expires max;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
# cache
fastcgi_cache domain4.com;
fastcgi_cache_valid 200 60m;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_key $scheme$request_method$host$request_uri;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
}
}
frei -m
total used free shared buffers cached
Mem: 987 721 266 3 19 124
-/+ buffers/cache: 577 409
Swap: 255 133 122
ps aux --sort -rss | head
(Benutzer Apache ist nginx, da ich früher Apache auf diesem Rechner installiert habe, den Dienst jetzt aber beende)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 24505 5.2 13.1 372208 132552 ? R 06:33 1:26 php-fpm: pool www
apache 24502 4.8 12.5 366332 126748 ? R 06:33 1:20 php-fpm: pool www
root 15490 0.2 11.6 1036476 117820 ? Ssl Sep30 1:30 node /var/www/html/sub.domain4.com/app/app.js
root 11488 0.0 3.3 905404 34336 ? Ssl Sep15 16:21 PM2 v0.14.7: God Daemon
apache 24866 7.0 3.0 265504 30448 ? S 06:56 0:18 php-fpm: pool www
apache 25247 7.3 2.6 262260 26976 ? S 06:58 0:10 php-fpm: pool www
apache 25449 7.1 2.3 259408 24260 ? S 06:58 0:07 php-fpm: pool www
mongod 3584 0.9 1.9 653472 19588 ? Sl Sep07 317:26 /usr/bin/mongod -f /etc/mongod.conf
root 2637 0.1 1.0 431044 11096 ? Sl Sep07 56:31 /usr/bin/python -Es /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda 24G 3.3G 20G 15% /
tmpfs 492M 108K 492M 1% /dev/shm
Apache hör schon auf
sudo lsof -nPi | grep ":80 (HÖREN)"
nginx 15280 root 12u IPv4 91859687 0t0 TCP *:80 (LISTEN)
nginx 15282 nginx 12u IPv4 91859687 0t0 TCP *:80 (LISTEN)
Dienst-HTTPD-Status
httpd is stopped
AKTUALISIEREN
Nach dem Upgrade auf 2 GB RAM und 2 CPU-Kerne, wenn ich die Domäne anpinge oder verwendehttp://www.webpagetest.orgbeim erneuten Test sind beide schneller, aber im Bericht Target First Byte Time
werden sie viel höher, was ist das und warum?
frei -m
total used free shared buffers cached
Mem: 1991 744 1246 12 78 229
-/+ buffers/cache: 436 1554
Swap: 255 0 255
ps aux --sort -rss | Kopf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2732 0.5 6.7 1069664 136836 ? Ssl 09:46 0:07 node /var/www/html/domain/app/app.js
mongod 2598 0.4 3.4 649400 69728 ? Sl 09:43 0:06 /usr/bin/mongod -f /etc/mongod.conf
root 2706 0.1 2.2 978924 45424 ? Ssl 09:45 0:02 PM2 v0.14.7: God Daemon
apache 5458 6.1 1.7 268540 35964 ? S 10:03 0:16 php-fpm: pool www
apache 5518 6.6 1.7 267752 35184 ? S 10:03 0:16 php-fpm: pool www
apache 5332 6.8 1.7 267604 35100 ? S 10:02 0:20 php-fpm: pool www
apache 5330 6.8 1.6 267420 34568 ? S 10:02 0:20 php-fpm: pool www
apache 5493 7.1 1.6 266028 33484 ? S 10:03 0:18 php-fpm: pool www
postgres 2557 0.3 0.9 324640 19812 ? S 09:43 0:04 /usr/pgsql-9.4/bin/postmaster -D /var/lib/pgsql/9.4/data
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda 24G 2.3G 21G 10% /
tmpfs 994M 108K 994M 1% /dev/shm
domain1.com
- 108 ms First Byte Time, 108 ms Target First Byte Time
sub.domain2.com
- 514 ms First Byte Time, Target First Byte Time
domain4.com
-124 ms First Byte Time, 114 ms Target First Byte Time
Antwort1
Als erstes würde ich den RAM Ihres Servers verdoppeln. Es ist sehr wenig frei, was bedeutet, dass nur sehr wenige Daten im RAM zwischengespeichert werden können. Das bedeutet, dass fast alle Festplattenlesevorgänge auf Ihre Festplatte erfolgen müssen, was sowohl Lese- als auch Schreibvorgänge verlangsamt.