日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

nhinx php 调优,高流量站点NGINX与PHP-fpm配置优化

發布時間:2025/3/11 php 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nhinx php 调优,高流量站点NGINX与PHP-fpm配置优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文由LinuxProbe.Com團隊成員岳國帥整理發布,原文來自:黑·白。

導讀

使用Nginx搭配PHP已有7年的經歷,這份經歷讓我們學會如何為高流量站點優化NGINX和PHP-fpm配置。

以下正是這方面的一些提示和建議:

1. 將TCP切換為UNIX域套接字

1. 將TCP切換為UNIX域套接字

UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的數據拷貝和上下文切換)。

但有一點需要牢記:僅運行在同一臺服務器上的程序可以訪問UNIX域套接字(顯然沒有網絡支持)。

upstream backend

{

# UNIX domain sockets

server unix:/var/run/fastcgi.sock;

# TCP sockets

# server 127.0.0.1:8080;

}

2. 調整工作進程數

現代計算機硬件是多處理器的,NGINX可以利用多物理或虛擬處理器。

多數情況下,你的Web服務器都不會配置為處理多種任務(比如作為Web服務器提供服務的同時也是一個打印服務器),你可以配置NGINX使用所有可用的處理器,NGINX工作進程并不是多線程的。

運行以下命令可以獲知你的機器有多少個處理器:

Linux上 -

cat /proc/cpuinfo | grep processor

FreeBSD上 -

sysctl dev .cpu | grep location

將nginx.conf文件中work_processes的值設置為機器的處理器核數。

同時,增大worker_connections(每個處理器核心可以處理多少個連接)的值,以及將"multi_accept"設置為ON,如果你使用的是Linux,則也使用"epoll":

# We have 16 cores

worker_processes 16;

# connections per worker

events

{

worker_connections 4096;

multi_accept on;

}

3. 設置upstream負載均衡

以我們的經驗來看,同一臺機器上多個upstream后端相比單個upstream后端能夠帶來更高的吞吐量。

例如,如果你想支持最大1000個PHP-fpm子進程(children),可以將該數字平均分配到兩個upstream后端,各自處理500個PHP-fpm子進程:

upstream backend {

server unix:/var/run/php5-fpm.sock1 weight=100 max_fails=5 fail_timeout=5;

server unix:/var/run/php5-fpm.sock2 weight=100 max_fails=5 fail_timeout=5;

}

4. 禁用訪問日志文件

這一點影響較大,因為高流量站點上的日志文件涉及大量必須在所有線程之間同步的IO操作。

access_log off;

log_not_found off;

error_log /var/log/nginx-error.log warn;

若你不能關閉訪問日志文件,至少應該使用緩沖:

access_log /var/log/nginx/access.log main buffer=16k;

5. 啟用GZip

gzip on;

gzip_disable "msie6";

gzip_vary on;

gzip_proxied any;

gzip_comp_level 6;

gzip_min_length 1100;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

6. 緩存被頻繁訪問的文件相關的信息

open_file_cache max=200000 inactive=20s;

open_file_cache_valid 30s;

open_file_cache_min_uses 2;

open_file_cache_errors on;

7. 調整客戶端超時時間

client_max_body_size 500M;

client_body_buffer_size 1m;

client_body_timeout 15;

client_header_timeout 15;

keepalive_timeout 2 2;

send_timeout 15;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

8. 調整輸出緩沖區大小

fastcgi_buffers 256 16k;

fastcgi_buffer_size 128k;

fastcgi_connect_timeout 3s;

fastcgi_send_timeout 120s;

fastcgi_read_timeout 120s;

reset_timedout_connection on;

server_names_hash_bucket_size 100;

9. /etc/sysctl.conf調優

# Recycle Zombie connections

net.inet.tcp.fast_finwait2_recycle=1

net.inet.tcp.maxtcptw=200000

# Increase number of files

kern.maxfiles=65535

kern.maxfilesperproc=16384

# Increase page share factor per process

vm.pmap.pv_entry_max=54272521

vm.pmap.shpgperproc=20000

# Increase number of connections

vfs.vmiodirenable=1

kern.ipc.somaxconn=3240000

net.inet.tcp.rfc1323=1

net.inet.tcp.delayed_ack=0

net.inet.tcp.restrict_rst=1

kern.ipc.maxsockbuf=2097152

kern.ipc.shmmax=268435456

# Host cache

net.inet.tcp.hostcache.hashsize=4096

net.inet.tcp.hostcache.cachelimit=131072

net.inet.tcp.hostcache.bucketlimit=120

# Increase number of ports

net.inet.ip.portrange.first=2000

net.inet.ip.portrange.last=100000

net.inet.ip.portrange.hifirst=2000

net.inet.ip.portrange.hilast=100000

kern.ipc.semvmx=131068

# Disable Ping-flood attacks

net.inet.tcp.msl=2000

net.inet.icmp.bmcastecho=1

net.inet.icmp.icmplim=1

net.inet.tcp.blackhole=2

net.inet.udp.blackhole=1

10. 監控

持續監控打開連接的數目,空閑內存以及等待狀態線程的數目。

設置警報在超出閾值時通知你。你可以自己構建這些警報,或者使用類似ServerDensity的東西。

確認安裝了NGINX的stub_status模塊。該模塊默認并不會編譯進NGINX,所以可能你需要重新編譯NGINX -

./configure --with-http_ssl_module --with-http_stub_status_module --without-mail_pop3_module

--without-mail_imap_module --without-mail_smtp_module

make install BATCH=yes

總結

以上是生活随笔為你收集整理的nhinx php 调优,高流量站点NGINX与PHP-fpm配置优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。