欢迎来到云服务器

服务器租用

大流量站点LNMP情况NGINX与PHP-fpm优化方案

以下正是这方面的一些提示和发起:

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

腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号