[英]process manage and memory usage nginx + nodejs + php
nginx
2 site use php
1 site use nodejs with nginx proxy
linode (
1 GB RAM 1 CPU Core 24 GB SSD Storage
2 TB Transfer
40 Gbit Network In
125 Mbit Network Out
) with centos 6.5
我有麻煩隨機獲得502錯誤的網關,僅在nodejs網站上,其他都很好。
所以我想也許是因為我的內存使用情況或某些硬件限制,所以我在下面的命令中檢查了我的內存使用情況,我有疑問
1.為什么要運行這么多php-fpm
2.內存空閑只有8個? 多數民眾贊成為什么我總是崩潰我的nodejs項目?
# free -m
total used free shared buffers cached
Mem: 987 978 8 3 0 11
-/+ buffers/cache: 967 20
Swap: 255 255 0
# top -b -n 1 -a
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28337 root 20 0 833m 51m 2972 S 0.0 5.2 0:01.93 node /var/www/n
27914 apache 20 0 278m 36m 3460 S 0.0 3.7 0:29.15 php-fpm
27963 apache 20 0 278m 36m 3440 S 0.0 3.7 0:28.50 php-fpm
27992 apache 20 0 273m 36m 3156 S 0.0 3.7 0:27.14 php-fpm
27920 apache 20 0 279m 35m 3440 S 0.0 3.6 0:28.94 php-fpm
27958 apache 20 0 277m 33m 3408 S 9.8 3.4 0:29.20 php-fpm
27898 apache 20 0 278m 33m 3204 S 0.0 3.4 0:30.88 php-fpm
27976 apache 20 0 274m 32m 3392 S 0.0 3.3 0:26.00 php-fpm
28043 apache 20 0 265m 32m 3392 S 0.0 3.2 0:20.91 php-fpm
28000 apache 20 0 272m 32m 3440 S 0.0 3.2 0:24.74 php-fpm
28035 apache 20 0 265m 31m 3156 S 0.0 3.2 0:20.20 php-fpm
27980 apache 20 0 273m 31m 3156 S 0.0 3.2 0:26.64 php-fpm
28038 apache 20 0 264m 31m 3460 S 0.0 3.2 0:19.93 php-fpm
28021 apache 20 0 267m 30m 3156 S 0.0 3.1 0:19.82 php-fpm
28016 apache 20 0 266m 29m 3392 S 0.0 3.0 0:20.18 php-fpm
28024 apache 20 0 265m 29m 3440 S 0.0 3.0 0:19.73 php-fpm
25427 root 20 0 884m 29m 620 S 0.0 3.0 1:31.45 PM2 v0.14.7: Go
28054 apache 20 0 260m 27m 3344 S 0.0 2.8 0:17.47 php-fpm
28012 apache 20 0 264m 27m 3392 S 0.0 2.8 0:20.82 php-fpm
28058 apache 20 0 258m 26m 3460 S 13.7 2.7 0:16.46 php-fpm
28094 apache 20 0 258m 25m 3204 S 0.0 2.6 0:15.12 php-fpm
28241 apache 20 0 255m 24m 3440 S 0.0 2.5 0:13.54 php-fpm
28091 apache 20 0 255m 24m 3440 S 0.0 2.5 0:13.13 php-fpm
28254 apache 20 0 254m 24m 3204 S 0.0 2.5 0:12.11 php-fpm
2637 root 20 0 420m 23m 1712 S 0.0 2.4 12:03.18 fail2ban-server
28258 apache 20 0 252m 22m 3224 S 0.0 2.3 0:11.64 php-fpm
28268 apache 20 0 252m 22m 3204 S 0.0 2.3 0:10.10 php-fpm
28293 apache 20 0 249m 21m 3588 S 9.8 2.1 0:08.04 php-fpm
28274 apache 20 0 248m 19m 3204 S 0.0 2.0 0:09.04 php-fpm
28288 apache 20 0 248m 18m 3204 S 0.0 1.9 0:07.52 php-fpm
28312 apache 20 0 244m 17m 3628 S 0.0 1.7 0:04.71 php-fpm
28298 apache 20 0 245m 16m 3156 S 0.0 1.7 0:05.48 php-fpm
28319 apache 20 0 242m 14m 3388 S 0.0 1.4 0:03.05 php-fpm
28333 apache 20 0 241m 13m 3440 S 0.0 1.4 0:01.73 php-fpm
28344 apache 20 0 239m 12m 3828 S 0.0 1.2 0:00.47 php-fpm
28355 root 20 0 98696 5808 4896 S 0.0 0.6 0:00.00 sshd
28342 postgres 20 0 318m 3628 2120 S 0.0 0.4 0:00.02 postmaster
28356 sshd 20 0 67628 3140 2408 S 0.0 0.3 0:00.00 sshd
28368 root 20 0 15080 2000 1704 R 0.0 0.2 0:00.00 top
26870 nginx 20 0 97436 1848 644 S 2.0 0.2 1:04.77 nginx
ps aux --sort -rss | 頭
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 28298 0.9 4.1 286860 41600 ? S 04:46 0:32 php-fpm: pool www
root 28649 3.9 4.0 712164 41360 ? Ssl 05:43 0:01 node /var/www/html/nodejssite.com/app/app.js
apache 28293 0.9 3.9 287736 40072 ? S 04:44 0:33 php-fpm: pool www
apache 28319 0.9 3.8 283160 38668 ? S 04:51 0:28 php-fpm: pool www
apache 28344 0.9 3.6 282864 36704 ? S 04:56 0:27 php-fpm: pool www
apache 28312 1.1 3.5 290280 36108 ? S 04:49 0:36 php-fpm: pool www
apache 28274 0.9 3.5 290128 35412 ? S 04:39 0:35 php-fpm: pool www
apache 28268 0.8 3.3 289060 34248 ? S 04:37 0:33 php-fpm: pool www
apache 28408 0.8 3.2 274004 33004 ? S 05:03 0:21 php-fpm: pool www
/etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/schema+json
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-javascript
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/eot
font/opentype
image/bmp
image/svg+xml
image/vnd.microsoft.icon
image/x-icon
text/cache-manifest
text/css
text/javascript
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy
text/xml;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
}
/etc/nginx/conf.d/default.conf
server {
listen 80;
server_name phpsite.com www.phpsite.com;
access_log /var/log/nginx/phpsite.access.log;
root /var/www/html/phpsite;
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;
}
}
server {
listen 80;
server_name sub.phpsite.com www.sub.phpsite.com;
access_log /var/log/nginx/sub.phpsite.access.log;
root /var/www/html/sub;
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;
}
}
server {
listen 80;
server_name nodejssite.com www.nodejssite.com;
access_log /var/log/nginx/nodejssite.com.access.log;
location ~ ^/sitemap/(.*)$ {
root /var/www/html/nodejssite.com/app/Sitemap/SitemapGz;
}
location /robots.txt {
alias /var/www/html/nodejssite.com/app/robots.txt;
}
location ~ ^/(images/|javascripts/|stylesheets/|fonts) {
root /var/www/html/nodejssite.com/app/assets;
access_log off;
expires max;
}
location / {
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;
}
}
php-fpm進程數量由它在ubuntu中的配置文件/etc/php5/fpm/pool.d/www.conf
控制。
pm = dynamic pm.max_children = 64 pm.start_servers = 8 pm.min_spare_servers = 8 pm.max_spare_servers = 32 pm.max_requests = 500
我的建議是根據您預期的站點訪問者數來設置此值。 例如:
pm.start_servers = 6
pm.min_spare_servers = 6
pm.max_spare_servers = 6
如果服務器上沒有太多用戶,則php-fpm的最佳策略是pm = ondemand
你可以在那里了解更多
PS>您能否發布此命令的結果,以根據您當前的應用程序內存消耗來嘗試幫助您: ps aux --sort -rss | head
ps aux --sort -rss | head
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.