很多時(shí)候,我沒(méi)都會(huì)問(wèn)一個(gè)問(wèn)題,那些高流量的站點(diǎn)是如何做到有那么多的流量的?他們配置后又是如何優(yōu)化的呢?那么今天匯仁智杰的程序大師就和大家說(shuō)說(shuō)我們?cè)撊绾蝺?yōu)化。
1. 將TCP切換為UNIX域套接字
UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的數(shù)據(jù)拷貝和上下文切換)。
但有一點(diǎn)需要牢記:僅運(yùn)行在同一臺(tái)服務(wù)器上的程序可以訪問(wèn)UNIX域套接字(顯然沒(méi)有網(wǎng)絡(luò)支持)。
upstream backend
{
# UNIX domain sockets
server unix:/var/run/fastcgi.sock;
# TCP sockets
# server 127.0.0.1:8080;
}
2. 調(diào)整工作進(jìn)程數(shù)
現(xiàn)代計(jì)算機(jī)硬件是多處理器的,NGINX可以利用多物理或虛擬處理器。
多數(shù)情況下,你的Web服務(wù)器都不會(huì)配置為處理多種任務(wù)(比如作為Web服務(wù)器提供服務(wù)的同時(shí)也是一個(gè)打印服務(wù)器),你可以配置NGINX使用所有可用的處理器,NGINX工作進(jìn)程并不是多線程的。
運(yùn)行以下命令可以獲知你的機(jī)器有多少個(gè)處理器:
Linux上 -
cat /proc/cpuinfo | grep processor
FreeBSD上 -
sysctl dev .cpu | grep location
將nginx.conf文件中work_processes的值設(shè)置為機(jī)器的處理器核數(shù)。
同時(shí),增大worker_connections(每個(gè)處理器核心可以處理多少個(gè)連接)的值,以及將"multi_accept"設(shè)置為ON,如果你使用的是Linux,則也使用"epoll":
# We have 16 cores
worker_processes 16;
# connections per worker
events
{
worker_connections 4096;
multi_accept on;
}
3. 設(shè)置upstream負(fù)載均衡
以我們的經(jīng)驗(yàn)來(lái)看,同一臺(tái)機(jī)器上多個(gè)upstream后端相比單個(gè)upstream后端能夠帶來(lái)更高的吞吐量。
例如,如果你想支持最大1000個(gè)PHP-fpm子進(jìn)程(children),可以將該數(shù)字平均分配到兩個(gè)upstream后端,各自處理500個(gè)PHP-fpm子進(jìn)程:
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. 禁用訪問(wèn)日志文件
這一點(diǎn)影響較大,因?yàn)楦吡髁空军c(diǎn)上的日志文件涉及大量必須在所有線程之間同步的IO操作。
access_log off;
log_not_found off;
error_log /var/log/nginx-error.log warn;
若你不能關(guān)閉訪問(wèn)日志文件,至少應(yīng)該使用緩沖:
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. 緩存被頻繁訪問(wèn)的文件相關(guān)的信息
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
7. 調(diào)整客戶(hù)端超時(shí)時(shí)間
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. 調(diào)整輸出緩沖區(qū)大小
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調(diào)優(yōu)
# 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. 監(jiān)控
持續(xù)監(jiān)控打開(kāi)連接的數(shù)目,空閑內(nèi)存以及等待狀態(tài)線程的數(shù)目。
設(shè)置警報(bào)在超出閾值時(shí)通知你。你可以自己構(gòu)建這些警報(bào),或者使用類(lèi)似ServerDensity的東西。
確認(rèn)安裝了NGINX的stub_status模塊。該模塊默認(rèn)并不會(huì)編譯進(jìn)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
以上呢!就是匯仁智杰小編和大家說(shuō)的,希望對(duì)你有所幫助,今天的內(nèi)容就分享這些啦。
免費(fèi)學(xué)習(xí)課堂
- 免費(fèi)推廣知識(shí)
- 競(jìng)價(jià)推廣知識(shí)
- 新媒體營(yíng)銷(xiāo)知識(shí)
- 網(wǎng)站運(yùn)營(yíng)知識(shí)
- 網(wǎng)站設(shè)計(jì)知識(shí)
- 網(wǎng)站建設(shè)知識(shí)
- Web前端知識(shí)
- 軟文營(yíng)銷(xiāo)知識(shí)
- 網(wǎng)站策劃知識(shí)
- 整合營(yíng)銷(xiāo)
推薦文章
- 織夢(mèng)dedecms漏洞修復(fù)大全含任意文件
- 整頓微信公眾號(hào)過(guò)度營(yíng)銷(xiāo) 對(duì)嚴(yán)重違
- SEO優(yōu)化過(guò)程要避免什么?
- 網(wǎng)站空間被掛馬的原因原因及解決
- 2016企業(yè)該如何運(yùn)用互聯(lián)網(wǎng)進(jìn)行營(yíng)銷(xiāo)
- WEB前端項(xiàng)目開(kāi)發(fā)中需注意的細(xì)節(jié)
- 低價(jià)網(wǎng)站建設(shè)的危害有哪些?
- 如何詳細(xì)的分析你網(wǎng)站的競(jìng)爭(zhēng)對(duì)手
- 網(wǎng)站設(shè)計(jì)中四個(gè)常犯的錯(cuò)誤
- 如何搭配網(wǎng)站設(shè)計(jì)中的色彩?
你知道高流量站點(diǎn)NGINX與PHP-fpm配置是如何優(yōu)化的嗎?
來(lái)源:北京匯仁智杰科技有限公司 時(shí)間:2016-04-09 點(diǎn)擊: 次
推薦文章
- 織夢(mèng)dedecms漏洞修復(fù)大全含任意文件2016-09-05
- 整頓微信公眾號(hào)過(guò)度營(yíng)銷(xiāo) 對(duì)嚴(yán)重違2016-01-26
- SEO優(yōu)化過(guò)程要避免什么?2016-01-26
- 網(wǎng)站空間被掛馬的原因原因及解決2016-01-26
- 2016企業(yè)該如何運(yùn)用互聯(lián)網(wǎng)進(jìn)行營(yíng)銷(xiāo)2016-01-26
- WEB前端項(xiàng)目開(kāi)發(fā)中需注意的細(xì)節(jié)2016-01-26
- 低價(jià)網(wǎng)站建設(shè)的危害有哪些?2016-01-15
- 如何詳細(xì)的分析你網(wǎng)站的競(jìng)爭(zhēng)對(duì)手2015-06-10
- 網(wǎng)站設(shè)計(jì)中四個(gè)常犯的錯(cuò)誤2015-01-22
- 如何搭配網(wǎng)站設(shè)計(jì)中的色彩?2015-01-22