摘要:優(yōu)化運(yùn)行用戶啟動(dòng)進(jìn)程通常設(shè)置成和的數(shù)量相等阻塞和非阻塞網(wǎng)絡(luò)模型同步阻塞模型,一請(qǐng)求一進(jìn)線程,當(dāng)進(jìn)線程增加到一定程度后更多時(shí)間浪費(fèi)到切換一,性能急劇下降,所以負(fù)載率不高基于時(shí)間的非阻塞多路復(fù)用或模型一個(gè)進(jìn)程在短時(shí)間內(nèi)可以相應(yīng)大量的請(qǐng)求建議值
nginx 優(yōu)化
user www-data; 運(yùn)行用戶
worker_processes 4; 啟動(dòng)進(jìn)程,通常設(shè)置成和cpu的數(shù)量相等
阻塞和非阻塞網(wǎng)絡(luò)模型;同步阻塞模型,一請(qǐng)求一進(jìn)(線)程,當(dāng)進(jìn)(線)程增加到一定程度后
更多CPU時(shí)間浪費(fèi)到切換一,性能急劇下降,所以負(fù)載率不高
nginx基于時(shí)間的非阻塞多路復(fù)用(epoll或kquene)模型
一個(gè)進(jìn)程在短時(shí)間內(nèi)可以相應(yīng)大量的請(qǐng)求
建議值 <=cpu核心數(shù)量,一般高于cpu數(shù)量有好處,也許還有進(jìn)程切換開銷的負(fù)面影響
將work process綁定到特定的cpu上,避免進(jìn)程在cpu間切換的開銷
work_cpu_affinity 0001 0010 0100 1000
8內(nèi)核4進(jìn)程時(shí)的設(shè)置方法 work_cpu_affinity 00000001 00000010 00000100 10000000
worker_rlimit_nofile 655350 每進(jìn)程最大可打開文件描述符數(shù)量(Linux上文件描述符比較廣義,網(wǎng)絡(luò)端口、設(shè)備、磁盤文件都是)
文件描述符用完了,新的鏈接會(huì)被拒絕,產(chǎn)生502類錯(cuò)誤。linux最大可打開文件數(shù)可通過(guò)ulimit -n FILECNT或 /etc/security/limit.conf配置
理論值 系統(tǒng)最大數(shù)量/進(jìn)程數(shù)。但進(jìn)程間工作量并不是平均分配的,所以可設(shè)置的大一些
error_log /var/log/nginx/error.log; 全局錯(cuò)誤日志及PID文件
pid /var/run/nginx.pid;
工作模式及連接數(shù)上限
events {
? worker_connections 200000; 并發(fā)響應(yīng)能力的關(guān)鍵配置值
每個(gè)進(jìn)程允許的最大同時(shí)連接數(shù),work_connectins * work_processes =maxConnection; 要注意maxconnections不等同于可相應(yīng)的用戶數(shù)量 因?yàn)橐话阋粋€(gè)瀏覽器會(huì)同時(shí)開兩條鏈接,如果反向代理,nginx到后端連服務(wù)器的鏈接數(shù)也要占用連接數(shù) 所以,做靜態(tài)服務(wù)器時(shí),一般maxClient = work_connectins * work_processes / 2 做反向代理服務(wù)器時(shí) maxClient = work_connectins * work_processes / 4 這個(gè)值理論上越大越好,但最多可承受多少請(qǐng)求與配件和網(wǎng)絡(luò)相關(guān),也可最大可打開文件,最大可用socket數(shù)量? 指明使用epoll 或 kquene(*BSD)
? use epoll; epoll是多路復(fù)用IO(I/O Multiplexing)中的一種方式,但是僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性能
要達(dá)到超高負(fù)載下最好的網(wǎng)絡(luò)響應(yīng)能力,還有必要優(yōu)化與網(wǎng)絡(luò)相關(guān)的linux內(nèi)核參數(shù)
worker_connections 1024; 單個(gè)后臺(tái)worker process進(jìn)程的最大并發(fā)鏈接數(shù)
multi_accept on;
}
http區(qū)域設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持
? http {
? include /etc/nginx/mime.types; 設(shè)定mime類型,類型由mime.type文件定義
? default_type application/octet-stream;
? access_log /var/log/nginx/access.log; 設(shè)定日志格式
? error_log logs/error_log crit;
? access_log logs/access_log main;
關(guān)閉此項(xiàng)可減少IO開銷,但也無(wú)法記錄訪問(wèn)信息,不利用業(yè)務(wù)分析,一般運(yùn)維情況不建議使用
只記錄更為嚴(yán)重的錯(cuò)誤日志,可減少IO壓力
endfile on; sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來(lái)輸出文件,對(duì)于普通應(yīng)用,必須設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為 off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime.
cp_nopush on; 啟用內(nèi)核復(fù)制模式,應(yīng)用保持開啟達(dá)到最快的IO效率
cp_nodelay on|off; on禁用Nagle算法
簡(jiǎn)單說(shuō),啟動(dòng)如上兩項(xiàng)配置,會(huì)在數(shù)據(jù)包達(dá)到一定大小后在發(fā)送數(shù)據(jù),這樣會(huì)較少網(wǎng)絡(luò)通信次數(shù),降低阻塞概率,但也會(huì)影響響應(yīng)的及時(shí)性,比較適合于文件下載這類的大數(shù)據(jù)包通信場(chǎng)景
keepalive_timeout 0; HTTP1.1支持持久連接alive
* 降低每個(gè)鏈接的alive時(shí)間可在一定程度上提高可響應(yīng)連接數(shù)量,所以一般可適當(dāng)降低此值
keepalive_timeout 30s; 連接超時(shí)時(shí)間
gzip on; 開啟gzip壓縮,有效降低網(wǎng)絡(luò)流量
gzip_min_length 1000; 過(guò)短的內(nèi)容壓縮效果不佳,壓縮過(guò)程還會(huì)浪費(fèi)系統(tǒng)資源
gzip_comp_level 4; 可選值1~9研所級(jí)別越高壓縮效率越高,但對(duì)系統(tǒng)性能要求越高。
gzip_types text/plain text/css application/json application/x-javascript text/xml 壓縮內(nèi)容類別
open_file_cache max=655350 inactive=20s; 靜態(tài)文件緩存
* 最大緩存數(shù)量 * 文件未使用存活期
open_file_cache_valid 30s; 驗(yàn)證緩存有效期時(shí)間間隔
open_file_cache_min_uses 2; 有效期內(nèi)文件最少使用次數(shù)
設(shè)定請(qǐng)求緩沖
? client_header_buffer_size 1k;
? large_client_header_buffers 4 4k;
? include /etc/nginx/conf.d/*.conf;
? include /etc/nginx/sites-enabled/*;
設(shè)定負(fù)載均衡的服務(wù)器列表
upstream mysvr { server 192.168.8.1:3128 weight=5; server 192.168.8.2:80 weight=1; server 192.168.8.3:80 weight=6; } weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大(本機(jī)上的Squid開啟3128端口)
location表達(dá)式
syntax:location [=|~|~*|^~|@] /uri/ {...}分別兩種配置模式,普通字符串匹配,正則匹配
無(wú)開頭引導(dǎo)字符或以=開頭表示普通字符串匹配
以~或~*開頭表示正則匹配,~*表示不區(qū)分大小寫
多個(gè)location時(shí)匹配規(guī)則
總體是先普通后正則,只識(shí)別URI部分,例如請(qǐng)求為/test/1/abc.do? arg=xxx
1.先查找是否有=開頭的精確匹配,及l(fā)ocation =/test/1/abc.do {...}
2.再查找普通匹配,以最大前綴為規(guī)則,如下有兩個(gè)location
location /test/ {...}
location /test/1 {...}
則匹配后一項(xiàng)
3.匹配到一個(gè)普通格式后,搜索并未結(jié)束,而是暫存當(dāng)前結(jié)果,并繼續(xù)在搜索正則模式
4.在所有正則模式location中找到第一個(gè)匹配向后,以此屁配項(xiàng)為最終結(jié)果,所以正則匹配項(xiàng)匹配規(guī)則受定義前后順序影響,但普通匹配不會(huì)
5.如果未找到正則匹配項(xiàng),則以3中緩存的結(jié)果為最終結(jié)果
6.如果一個(gè)匹配都沒有,返回404
location =/ {...} 與 location / {...}的差別
前一個(gè)是精確匹配,只響應(yīng)/請(qǐng)求,所有/xxx類請(qǐng)求不會(huì)以前綴匹配形式匹配到它 ,而后一個(gè)正相反,所有請(qǐng)求必然都是以/開頭,所以沒有其他匹配結(jié)果時(shí)一定會(huì)執(zhí)行到它
location ^~ / {...} ^~意思是非正則,表示匹配到此模式后不再繼續(xù)正則搜索,所有如果這樣配置,相當(dāng)于關(guān)閉了正則匹配功能 ,因?yàn)橐粋€(gè)請(qǐng)求在普通匹配規(guī)則下沒得到其他普通匹配時(shí),最終匹配到這里
默認(rèn)請(qǐng)求
location / { root /root; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置 index index.php index.html index.htm; #定義首頁(yè)索引文件的名稱 fastcgi_pass www.xx.com; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params; }
定義錯(cuò)誤提示頁(yè)面
error_page 500 502 503 504 /50x.html; location = /50x.html { root /root; }
靜態(tài)文件,nginx自己處理
location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/htdocs; #過(guò)期30天,靜態(tài)文件不怎么更新,過(guò)期可以設(shè)大一點(diǎn),如果頻繁更新,則可以設(shè)置得小一點(diǎn)。 expires 30d; }
PHP 腳本請(qǐng)求全部轉(zhuǎn)發(fā)到 FastCGI處理. 使用FastCGI默認(rèn)配置.
location ~ .php$ { root /root; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name; include fastcgi_params; }
設(shè)定查看Nginx狀態(tài)的地址
location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } #禁止訪問(wèn) .htxxx 文件 location ~ /.ht { deny all; } } }
以上是一些基本的配置,使用Nginx最大的好處就是負(fù)載均衡
如果要使用負(fù)載均衡的話,可以修改配置http節(jié)點(diǎn)如下:
設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持
http { include /etc/nginx/mime.types; #設(shè)定mime類型,類型由mime.type文件定義 default_type application/octet-stream; #設(shè)定日志格式 access_log /var/log/nginx/access.log; #省略 #設(shè)定負(fù)載均衡的服務(wù)器列表 upstream mysvr { #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大 server 192.168.8.1x:3128 weight=5;#本機(jī)上的Squid開啟3128端口 server 192.168.8.2x:80 weight=1; server 192.168.8.3x:80 weight=6; upstream mysvr2 { #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大 server 192.168.8.x:80 weight=1; server 192.168.8.x:80 weight=6; }
第一個(gè)虛擬服務(wù)器
server { #偵聽192.168.8.x的80端口 listen 80; server_name 192.168.8.x; #對(duì)aspx后綴的進(jìn)行負(fù)載均衡請(qǐng)求 location ~ .*.aspx$ { root /root; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置 index index.php index.html index.htm; #定義首頁(yè)索引文件的名稱。 proxy_pass http://mysvr ;#請(qǐng)求轉(zhuǎn)向mysvr 定義的服務(wù)器列表
以下是一些反向代理的配置可刪除.
proxy_redirect off; #后端的Web服務(wù)器可以通過(guò)X-Forwarded-For獲取用戶真實(shí)IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù) client_body_buffer_size 128k; #緩沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù), proxy_connect_timeout 90; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí)) proxy_send_timeout 90; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí)) proxy_read_timeout 90; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí)) proxy_buffer_size 4k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小 proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁(yè)平均在32k以下的話,這樣設(shè)置 proxy_busy_buffers_size 64k; #高負(fù)荷下緩沖大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳 } } }Nginx平滑升級(jí)
下載Nginx地址:http://nginx.org/download/ngi...
nginx版本:1.8.0
nginx升級(jí)版本:1.12.1
nginx -v #查看當(dāng)前Nginx版本
nginx -V #查看當(dāng)前Nginx編譯參數(shù)
在執(zhí)行編譯時(shí)會(huì)報(bào)錯(cuò)沒有--with-http_spdy_module選項(xiàng)(nginx 1.9.5 已經(jīng)沒有了 --with-http_spdy_module ,取代的是 --with-http_v2_module),查看官方模塊地址:http://nginx.org/en/docs/
開始部署
[root@localhost src]#tar xvf nginx-1.12.1.tar.gz [root@localhost nginx-1.12.1]# cd nginx-1.12.1 [root@localhost nginx-1.12.1]# ./configure --user=tdoa --group=tdoa --prefix=/usr/local/tdoa/nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-pcre=/root/linux-2015/down/pcre-8.32 --with-pcre-jit --with-http_v2_module [root@localhost nginx-1.12.1]# make
執(zhí)行make后,make install無(wú)需執(zhí)行,將現(xiàn)有nginx重命名
[root@localhost objs]# mv /usr/local/tdoa/nginx/sbin/nginx /usr/local/tdoa/nginx/sbin/nginx.old [root@localhost objs]# pwd /usr/local/src/nginx-1.12.1/objs [root@localhost objs]# cp nginx nginx nginx.8 [root@localhost objs]# cp nginx /usr/local/tdoa/nginx/sbin/ [root@localhost objs]# /usr/local/tdoa/nginx/sbin/nginx -v nginx version: nginx/1.12.1 [root@localhost objs]# /usr/local/tdoa/nginx/sbin/nginx -t nginx: the configuration file /usr/local/tdoa/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/tdoa/nginx/conf/nginx.conf test is successful [root@localhost objs]# /usr/local/tdoa/nginx/sbin/nginx -s reload [root@localhost objs]# netstat -tnlp |grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 98457/nginx tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1680/cupsd tcp 0 0 ::1:631 :::* LISTEN 1680/cupsd
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39541.html
摘要:資源獲取方式根據(jù)下面的索引,大家可以選擇自己需要的資源,然后在松哥公眾號(hào)牧碼小子后臺(tái)回復(fù)對(duì)應(yīng)的口令,就可以獲取到資源的百度云盤下載地址。公眾號(hào)二維碼如下另外本文會(huì)定期更新,松哥有新資源的時(shí)候會(huì)及時(shí)分享給大家,歡迎各位小伙伴保持關(guān)注。 沒有一條路是容易的,特別是轉(zhuǎn)行計(jì)算機(jī)這條路。 松哥接觸過(guò)很多轉(zhuǎn)行做開發(fā)的小伙伴,我了解到很多轉(zhuǎn)行人的不容易,記得松哥大二時(shí)剛剛決定轉(zhuǎn)行計(jì)算機(jī),完全不知道這...
摘要:一測(cè)試工具壓力測(cè)試工具是針對(duì)的性能測(cè)試工具,可以只安裝工具。顯示版本號(hào)并退出。用戶名和密碼由一個(gè)隔開,并以編碼形式發(fā)送。參考并發(fā)數(shù)問(wèn)題思考與工作原理和優(yōu)化漏洞調(diào)大的并發(fā)連接數(shù)調(diào)的等。 一、測(cè)試工具: Apache 壓力測(cè)試工具ab ab是針對(duì)apache的性能測(cè)試工具,可以只安裝ab工具。 ubuntu安裝ab apt-get install apache2-utils centos安...
摘要:一測(cè)試工具壓力測(cè)試工具是針對(duì)的性能測(cè)試工具,可以只安裝工具。顯示版本號(hào)并退出。用戶名和密碼由一個(gè)隔開,并以編碼形式發(fā)送。參考并發(fā)數(shù)問(wèn)題思考與工作原理和優(yōu)化漏洞調(diào)大的并發(fā)連接數(shù)調(diào)的等。 一、測(cè)試工具: Apache 壓力測(cè)試工具ab ab是針對(duì)apache的性能測(cè)試工具,可以只安裝ab工具。 ubuntu安裝ab apt-get install apache2-utils centos安...
摘要:負(fù)載均衡就是用來(lái)幫助我們將眾多的客戶端請(qǐng)求合理的分配到各個(gè)服務(wù)器,以達(dá)到服務(wù)端資源的充分利用和更少的請(qǐng)求時(shí)間。如下面的配置復(fù)制代碼這樣可以完美繞過(guò)瀏覽器的同源策略訪問(wèn)的屬于同源訪問(wèn),而對(duì)服務(wù)端轉(zhuǎn)發(fā)的請(qǐng)求不會(huì)觸發(fā)瀏覽器的同源策略。 性能優(yōu)化是一門大學(xué)問(wèn),本文僅對(duì)個(gè)人一些積累知識(shí)的闡述,歡迎下面補(bǔ)充。 拋出一個(gè)問(wèn)題,從輸入url地址欄到所有內(nèi)容顯示到界面上做了哪些事? 1.瀏覽器向 DN...
閱讀 2574·2021-09-30 09:48
閱讀 2564·2019-08-30 14:10
閱讀 2708·2019-08-29 11:22
閱讀 1837·2019-08-26 13:51
閱讀 2276·2019-08-26 12:02
閱讀 2415·2019-08-23 16:06
閱讀 3548·2019-08-23 14:06
閱讀 1093·2019-08-23 13:56