⑴ windows下nginx 啟動php-cgi進程數量怎麼修改
NMP環境現在還是比較多人用的,下面介紹一個修改php-cgi進程數的方法: 一、修改php-cgi: vi /usr/local/nginx/conf/nginx.conf 二、其中worker_processes 1;可以修改成2或3個,nginx本身就很強大,不需要像apache那樣,開啟過多的進程來保證其穩定運行。 vi /usr/local/php/etc/php-fpm.conf 三、找到,按你的內存容量修改PHP進程的數量,一般128內存開啟6個,256內存開啟16個。這樣能保證,在PHP大並發的情況下不會502錯誤,註:PHP5.3系列不需要修改。 四、優化後,重啟lnmp /root/lnmp restart
⑵ 我用Nginx+PHP-FPM搭建的網站,每隔5分鍾PHP-FPM進程數量突然驟降,怎麼回事呢
這種情況一般都是網路阻塞造成的大量用戶連接到網站當中造成的,查一下伺服器的網路使用情況是否遭遇ddos攻擊或者網卡損壞的情況。
⑶ nginx 多進程模式 php如何多線程
這個問題比較初級,官方文檔上的資料都是很全的。
Nginx 是非阻塞IO & IO復用模型,通過操作系統提供的類似 epoll 的功能,可以在一個線程里處理多個客戶端的請求。
Nginx 的進程就是線程,即每個進程里只有一個線程,但這一個線程可以服務多個客戶端。
PHP-FPM 是阻塞的單線程模型,pm.max_children 指定的是最大的進程數量,pm.max_requests 指定的是每個進程處理多少個請求後重啟(因為 PHP 偶爾會有內存泄漏,所以需要重啟).
PHP-FPM 的每個進程也只有一個線程,但是一個進程同時只能服務一個客戶端。
大多數的 linux 程序都傾向於使用進程而不是線程,因為 Linux 下相對來說創建進程的開銷比較小,而 Linux 的線程功能又不是很強大。
⑷ nginx 使用php解析的基本幾個配置
#運行用戶
user nobody;
#啟動進程,通常設置成和cpu的數量相等
worker_processes 1;
#全局錯誤日誌及PID文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#工作模式及連接數上限
events {
#epoll是多路復用IO(I/O Multiplexing)中的一種方式,
#僅用於linux2.6以上內核,可以大大提高nginx的性能
use epoll;
#單個後台worker process進程的最大並發鏈接數
worker_connections 1024;
# 並發總數是 worker_processes 和 worker_connections 的乘積
# 即 max_clients = worker_processes * worker_connections
# 在設置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什麼
# 為什麼上面反向代理要除以4,應該說是一個經驗值
# 根據以上條件,正常情況下的Nginx Server可以應付的最大連接數為:4 * 8000 = 32000
# worker_connections 值的設置跟物理內存大小有關
# 因為並發受IO約束,max_clients的值須小於系統可以打開的最大文件數
# 而系統可以打開的最大文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右
# 我們來看看360M內存的VPS可以打開的文件句柄數是多少:
# $ cat /proc/sys/fs/file-max
# 輸出 34336
# 32000 < 34336,即並發連接總數小於系統可以打開的文件句柄總數,這樣就在操作系統可以承受的范圍之內
# 所以,worker_connections 的值需根據 worker_processes 進程數目和系統可以打開的最大文件總數進行適當地進行設置
# 使得並發總數小於操作系統可以打開的最大文件數目
# 其實質也就是根據主機的物理CPU和內存進行配置
# 當然,理論上的並發總數可能會和實際有所偏差,因為主機還有其他的工作進程需要消耗系統資源。
# ulimit -SHn 65535
}
http {
#設定mime類型,類型由mime.type文件定義
include 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 logs/access.log main;
#sendfile 指令指定 nginx 是否調用 sendfile 函數(zero 方式)來輸出文件,
#對於普通應用,必須設為 on,
#如果用來進行下載等應用磁碟IO重負載應用,可設置為 off,
#以平衡磁碟與網路I/O處理速度,降低系統的uptime.
sendfile on;
#tcp_nopush on;
#連接超時時間
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#開啟gzip壓縮
gzip on;
gzip_disable "MSIE [1-6].";
#設定請求緩沖
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
#設定虛擬主機配置
server {
#偵聽80埠
listen 80;
#定義使用 www.nginx.cn訪問
server_name www.nginx.cn;
#定義伺服器的默認網站根目錄位置
root html;
#設定本虛擬主機的訪問日誌
access_log logs/nginx.access.log main;
#默認請求
location / {
#定義首頁索引文件的名稱
index index.php index.html index.htm;
}
# 定義錯誤提示頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#靜態文件,nginx自己處理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#過期30天,靜態文件不怎麼更新,過期可以設大一點,
#如果頻繁更新,則可以設置得小一點。
expires 30d;
}
#PHP 腳本請求全部轉發到 FastCGI處理. 使用FastCGI默認配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#禁止訪問 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}
網頁鏈接
⑸ 用nginx+php-fpm怎麼設置多個php應用才是對的
問得不是很清楚,我就解決兩個問題吧。
1、你是想實現一個php-fpm監聽多個埠。默認是監聽9000,你想監聽多幾個php-fpm。可以復制多幾份php-fpm.conf文件,每個的埠不一樣,然後通過php-fpm命令的-y參數,指定啟動的不同conf文件,即可。
2、不知道php-fpm要設置多少進程?這個要看你的內存寬不寬裕,一個php-fpm的進程大概佔用20M的內存。獨立的php-fpm應用,用靜態好點。還有其它服務程序(如mysql),用動態。
選擇靜態分配的話,設置pm=static,對應的pm.max_children就是設置進程數量。
選擇動態分配的話,設置pm=dynamic,pm.start_servers:動態方式下的起始php-fpm進程數量。pm.min_spare_servers:動態方式下的最小php-fpm進程數量。pm.max_spare_servers:動態方式下的最大php-fpm進程數量。