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

本文由LinuxProbe.Com团队成员岳国帅整理发布,原文来自:黑·白。

导读

使用Nginx搭配PHP已有7年的经历,这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。

8b4c8ecf9452705d8a158c9bfd118226.png

以下正是这方面的一些提示和建议:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php rinit,PHP执行原理

一:PHP简介:PHP:Hypertext Preprocessor 也就是“超文本预处理器”,是一种通用的开源脚本语言。语法吸收了C语言,Java和Perl的特点,使用广泛,主要适用于Web开发领域。二:PHP的设计理…

linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程。执行tcpdump命令tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113.26 >> /tmp/tcpdump.txtping game.campus.163.comcurl http://game.campus.163.comcurl http://game.campus.163.com结束后&#…

linux 高级i o函数,高级I/O函数

对于socket,最基本的输入输出函数就是,read和write。它们最基本,同样功能也是最少的。Unix中有几个函数是read/write的变种,在基本的输入输出功能上,还增加了一些非常使用的功能和特性,它们是:r…

安装linux必不可少的一个分区,安装linux系统对硬盘分区时,必须有的两种分区类型是什么?...

安装Linux系统对硬盘分区时,必须有两种分区类型: 根分区和交换分区。根分区就是root分区,所有的东西都在这个分区内。 /swap分区是交换分区,是一定磁盘空间(分区或文件),用于将部分内存中的数据换下来,以腾…

ubuntu和linux服务器,Linux服务器系统CentOS和Ubuntu Server如何选择? | 偶乃秋辰

在秋辰看来,目前最优秀的服务器系统就是Linux,但是Linux并不能说是一套完整的操作系统,准确的说它只是系统的内核,否则也不会有那么多的发行版如:Red Hat、CentOS、Debian、Ubuntu、Fedora等。其实Linux发行版系统很多…

linux 黑屏后死机,如何修复各种各样的黑屏死机

每次我们打开这些设备,我们都希望我们生活中的科技能发挥作用。当他们不能工作时,会让我们非常沮丧,尤其是当我们不知道如何解决问题时。所谓的“死亡黑屏”在操作系统之间很常见,当您打开机器,但屏幕空白。有时监视器…

cmd文件 c语言的段,对于TMS320F2812的CMD文件的理解

1.COFF格式要谈CMD文件,首先不可避免的要谈下COFF格式,COFF格式是通用目标文件格式(Common Object FileFormat)的缩写,它是一种流行的二进制可执行文件格式,在DSP里二进制可执行文件包括库文件(.lib)、目标文件(.obj)和最终可执行…

android点击事件的优先级,Android事件体系全面总结+实践分析,系列篇

前言在这一个月里,我利用闲余的时间看了下最近Android职业发展这块该怎么选择?这个问题各位大神的回答都非常透彻,相信对大家或多或少都在一定程度上有很大的帮助,今天在这里写这篇文章更多的是想以我开发十年的工作经历&#xff…

android各组件翻译,Android App框架指南(译文)

该系列文章是对Android推出的架构组件相关文章,按作者自己理解来翻译的,同时标记有作者自己一些简单笔记。如果读者发现文中有翻译不准确的地方,或者理解错误的地方,请不吝指教。源自Android官方Guide to app architecturel princ…

鸿蒙手机是个噱头,华为鸿蒙不是谈判噱头 必要时会应用手机当中!

7月30日,华为2019年上半年财报发布会上,华为董事长梁华在接受媒体采访时回应称,“鸿蒙”系统不是用来应对与美国谈判的噱头。今年5月,美国商务部将华为列入“实体清单”后不久,华为一系列“备胎”方案开始浮出水面&…

360浏览器html5无法播放,win7系统360浏览器播放不了视频的解决方法

今天和大家分享一下win7系统360浏览器播放不了视频问题的解决方法,在使用win7系统的过程中经常不知道如何去解决win7系统360浏览器播放不了视频的问题,有什么好的办法去解决win7系统360浏览器播放不了视频呢?小编教你只需要 1、视频无法正常…

html设置数字显示位数,数字万用表的显示位数和精度

数字万用表的显示位数和精度今天,我们来聊一聊数字万用表的位数和精度,到底什么是四位半?分辨率到底是哪个数?万用表的精度要如何计算?万用表的显示位数计数显示:万用表的显示位数范围。位数显示&#xff1…

w7提示无法关闭计算机,win7关不了机怎么回事?老司机教你怎么解决电脑关不了机...

win10系统的到来,慢慢的曾经称霸多年的xp已经退出了系统的舞台了,逐渐的win7也将重演历史,不过说到这个win7系统可以说是微软革命性的系统之一,其稳定、友好的界面,受到广大用户的拥戴,不过win7也有一些让人…

杭州招聘计算机专业毕业生,毕业季必看!杭州高校毕业生就业情况:这些专业最吃香!这个岗位最缺人!...

原标题:毕业季必看!杭州高校毕业生就业情况:这些专业最吃香!这个岗位最缺人!夏天,就是毕业的季节有一群人要离开校园,走上社会也有一群人要面临填志愿、选专业在杭州,什么专业最热门…

澳国立计算机录取分数,澳洲出国:2018年澳洲国立大学对高考成绩的本科录取分数线(多图)...

大师兄留学网(微信公众号:留学申请Free)是一支免费申请澳大利亚,新西兰,泰国,新加坡,马来西亚的零中介平台。大师兄留学网(微信号:Betty8990)在申请澳洲方面,有办理留学经验超过十年的学长学姐&…

寻仙手游维护公告服务器停服更新,寻仙手游3月1日停服更新公告 更新内容分享...

原标题:寻仙手游3月1日停服更新公告 更新内容分享在寻仙手游中,为了让玩家们更好的体验游戏。寻仙手游将于3月1日对游戏进行停服更新,本次更新新增了哪些新内容,今天小编就给大家带来寻仙手游3月1日停服更新公告的详细内容。寻仙手…

王者荣耀8月15日服务器维护,王者荣耀8月15日维护ios更新不了解 王者荣耀8月15日维护ios更新不了解决办法_蚕豆网新闻...

王者荣耀8月15日进行了维护更新,这次版本更新比较大,有新英雄马超等内容。但是维护完后不少玩家发现ios更新不了。大版本更新ios就很容易出现更新失败的情况,ios更新失败原因是什么?更新不了怎么解决?王者荣耀8月15日ios更新不了怎么办?第…

崩坏3服务器故障 临时维护,崩坏3 11.5游戏故障处理及补偿说明

崩坏3 11.5游戏故障补偿什么时候发?介绍了11.5游戏故障处理及补偿说明,希望这篇文章能够帮助到崩坏3的玩家!游戏介绍:崩坏3是由同名漫画改编的游戏作品,延续了崩坏学园2中的崩坏世界观,人气角色琪亚娜、雷电…

易语言通过服务器发送文件,易语言服务器与客户端发送文件

易语言服务器与客户端发送文件 内容精选换一换PL/pgSQL是一种可载入的过程语言。用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。SQL被大多数数据库用作查询语言。…

服务器将office转pdf文件,Windows服务-Office转PDF文件

一. 应用场景开发一个课件在线学习功能,要求将WORD, EXCEL, PPT类型课件可在线打开学习;最初设想使用第三方office插件,无奈价格太高放弃使用;我们最终的方案是:利用office自身的另存为功能,在服务器将上传…