国产综合精品-久久久久久成人毛片免费看-69久久夜色精品国产69-美国十次啦怡红院

Web前端知識

首頁 > 免費 > Web前端知識 >

你知道高流量站點NGINX與PHP-fpm配置是如何優(yōu)化的嗎?

來源:北京匯仁智杰科技有限公司   時間:2016-04-09   點擊:

  很多時候,我沒都會問一個問題,那些高流量的站點是如何做到有那么多的流量的?他們配置后又是如何優(yōu)化的呢?那么今天匯仁智杰的程序大師就和大家說說我們該如何優(yōu)化。
  1. 將TCP切換為UNIX域套接字
  UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的數(shù)據(jù)拷貝和上下文切換)。
  但有一點需要牢記:僅運行在同一臺服務(wù)器上的程序可以訪問UNIX域套接字(顯然沒有網(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)整工作進程數(shù)
  現(xiàn)代計算機硬件是多處理器的,NGINX可以利用多物理或虛擬處理器。
  多數(shù)情況下,你的Web服務(wù)器都不會配置為處理多種任務(wù)(比如作為Web服務(wù)器提供服務(wù)的同時也是一個打印服務(wù)器),你可以配置NGINX使用所有可用的處理器,NGINX工作進程并不是多線程的。
  運行以下命令可以獲知你的機器有多少個處理器:
  Linux上 -
  cat /proc/cpuinfo | grep processor
  FreeBSD上 -
  sysctl dev .cpu | grep location
  將nginx.conf文件中work_processes的值設(shè)置為機器的處理器核數(shù)。
  同時,增大worker_connections(每個處理器核心可以處理多少個連接)的值,以及將"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負載均衡
  以我們的經(jīng)驗來看,同一臺機器上多個upstream后端相比單個upstream后端能夠帶來更高的吞吐量。
  例如,如果你想支持最大1000個PHP-fpm子進程(children),可以將該數(shù)字平均分配到兩個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;
  若你不能關(guā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. 緩存被頻繁訪問的文件相關(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)整客戶端超時時間
  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)控打開連接的數(shù)目,空閑內(nèi)存以及等待狀態(tài)線程的數(shù)目。
  設(shè)置警報在超出閾值時通知你。你可以自己構(gòu)建這些警報,或者使用類似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
  以上呢!就是匯仁智杰小編和大家說的,希望對你有所幫助,今天的內(nèi)容就分享這些啦。

網(wǎng)絡(luò)營銷推廣?。”本﹨R仁智杰科技有限公司!

地址:北京市昌平區(qū)回龍觀龍冠大廈5層
咨詢:15201492965
業(yè)務(wù)QQ:373002979
E - mail:sales @ huirenzhijie.com
企業(yè)網(wǎng)站備案:京ICP備15021091號-1

匯仁智杰與眾不同

  • 有網(wǎng)絡(luò)推廣經(jīng)驗
  • 有網(wǎng)站建站隊伍
  • 有大型網(wǎng)站建設(shè)經(jīng)驗
  • 致力于營銷型網(wǎng)站建設(shè)
  • 始終堅持技術(shù)和服務(wù)同樣重要
查看PC版網(wǎng)站
備案號:京ICP備15021091號-1 版權(quán)所有:匯仁智杰