아래의 모든 정보와 함께 하나의 컴퓨터에서 여러 프로젝트를 실행하고 있습니다. 프로젝트가 fastcgi 캐시를 사용하고, 프로젝트가 사용되며 , 모든 프로젝트가 사용되는
경우 nginx 구성에서 . PHP
Node.js
proxy_pass
gzip
저는 서버를 유지하는 것이 처음입니다. 제 문제는 테스트를 실행하는 모든 프로젝트입니다.http://www.webpagetest.org/
첫 번째 바이트까지의 시간이 너무 깁니다., 몇 주 동안 검색했는데 이유를 찾을 수 없나요? 그리고 이러한 결과가 이 기계의 병목 현상인지 궁금하십니까? 아니면 내가 뭔가를 놓친 걸까? 어떤 제안이라도 감사하겠습니다!!
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
배경 정보
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 구성
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;
}
}
무료 -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 | 헤드
(이 시스템에 Apache를 설치했지만 지금은 서비스를 중지했기 때문에 사용자 Apache는 nginx입니다.)
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
아파치는 이미 중지
sudo lsof -nPi | grep ":80 (듣기)"
nginx 15280 root 12u IPv4 91859687 0t0 TCP *:80 (LISTEN)
nginx 15282 nginx 12u IPv4 91859687 0t0 TCP *:80 (LISTEN)
서비스 httpd 상태
httpd is stopped
업데이트
2GB RAM 2 CPU 코어로 업그레이드한 후 도메인을 ping하거나http://www.webpagetest.org둘 다 더 빠르게 다시 테스트했지만 보고서에서 Target First Byte Time
훨씬 더 높아졌습니다. 무엇이고 그 이유는 무엇입니까?
무료 -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 | 머리
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
답변1
내가 할 첫 번째 일은 서버의 RAM을 두 배로 늘리는 것입니다. 여유 공간이 거의 없다는 것은 RAM에 캐시할 수 있는 데이터가 거의 없다는 것을 의미합니다. 즉, 거의 모든 디스크 읽기가 디스크에 도달해야 하므로 읽기와 쓰기 속도가 모두 느려집니다.