nginx高性能web服務(wù)器系列_第1頁
nginx高性能web服務(wù)器系列_第2頁
nginx高性能web服務(wù)器系列_第3頁
nginx高性能web服務(wù)器系列_第4頁
nginx高性能web服務(wù)器系列_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余69頁可下載查看

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

NginxWEB Nginx入門簡(jiǎn) Nginx工作原理及安裝配 Nginx常用命令管理及升 Nginx配置文件精講 Nginx配置文件精講 實(shí)戰(zhàn)線上Nginx多站點(diǎn)配 企業(yè)實(shí)戰(zhàn)Nginx+Tomcat動(dòng)靜分離架 企業(yè)實(shí)戰(zhàn)Nginx+PHP(FastCGI)高性能服務(wù) Nginx與Tomcat/PHP架構(gòu)優(yōu) Nginx配置優(yōu)化及深入講 NginxRewrite規(guī)則詳解 NginxRewrite規(guī)則詳解 構(gòu)建Nginx均衡LAMP高性能服務(wù) Nginx日志分析及編 Nginx日志切割案例講 Nginx防盜鏈配置案例配 Nginx運(yùn)維日常故障解決方 Nginx均衡TCP協(xié)議服務(wù)器案 構(gòu)建企業(yè)級(jí)Nginx+Keepalived集群架 企業(yè)Nginx+Keepalived雙主架構(gòu)案例實(shí) Nginx門簡(jiǎn)WEB務(wù)器也稱為WWW(WORLDWIDEWEB)服務(wù)器,主要功能是提供網(wǎng)上信息瀏覽服務(wù)。WWW是Internet的多信息查詢工具Internet上近年才發(fā)展起來的服務(wù)發(fā)展最快和目前用的最廣泛的服務(wù)。正是因?yàn)橛辛薟WW具,才使得近年來InternetNginx("enginex")是一個(gè)高性能的HTTP和反向服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器。Nginx是由IgorSysoev為俄羅斯量第二的Rambler.ru站點(diǎn)開發(fā)的,第一個(gè)公開版本..0發(fā)布于04年10月4日。其將源代碼以類BSD證的形式它已經(jīng)在眾多流量很大的俄羅斯上使用了很長(zhǎng)時(shí)間,這些在2012年8月份,世界上最繁忙的中有11.48%使用Nginx作為其服務(wù)器或者服務(wù)器。目前互聯(lián)網(wǎng)主流公司360、、新浪、騰訊、阿里等,目前中國(guó)互聯(lián)網(wǎng)企業(yè)70%以上公司都在使用nginx作為自己的web服務(wù)器。Nginx點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx并發(fā)能力Ngnx由內(nèi)核和模塊組成,其中,內(nèi)核的設(shè)計(jì)非常微小和簡(jiǎn)潔,完成的工作也非常簡(jiǎn)單僅僅通過查找配置文件將客戶端請(qǐng)求到一個(gè)oatonbok(oaton是NgnxUL匹配),而在這個(gè)oaton中所配置的每個(gè)指令將會(huì)啟動(dòng)不同的模塊去完成相應(yīng)的工作。Nginx對(duì)于Apache點(diǎn)高并發(fā)響應(yīng)性能非常好,Nginx處理靜態(tài)文件并發(fā)反向性能非常強(qiáng)。(可用于負(fù)載均衡內(nèi)存和cpu率低。(為Apache1/5-對(duì)后端服務(wù)有健康檢查功能支持PHPcgi式和fastcgi式配置代碼簡(jiǎn)潔且容易上手Nginx工作原理及安裝配Ngnx由內(nèi)核和模塊組成,其中,內(nèi)核的設(shè)計(jì)非常微小和簡(jiǎn)潔,完成的工作也非常簡(jiǎn)單僅僅通過查找配置文件將客戶端請(qǐng)求一個(gè)oatonbok(oaton是Ngnx配置中的一個(gè)指令,用于UL匹配),而在這個(gè)oaton中所配置的每個(gè)指令將會(huì)啟動(dòng)不同的模塊去完成相應(yīng)的工作。Nginx的模塊從結(jié)構(gòu)上分為模塊、基礎(chǔ)模塊和第模塊:模塊:HTTP模塊、EVENT模塊和MAIL模塊基礎(chǔ)模塊:HTTPAccess塊、HTTPFastCGI塊、HTTP模塊和HTTPRewrite塊第模塊:HTTPUpstreamRequestHash模塊、Notice模塊HTTPAccessKey塊Nginx高并發(fā)得益于其采用了epoll型,與傳統(tǒng)的服務(wù)器程序架構(gòu)不同,epoll是linux內(nèi)核2.6以后才出現(xiàn)的。Nginx采用epoll模型,異步非阻塞,而apache采用的是select模型:Select點(diǎn):select選擇句柄的時(shí)候,是遍歷所有句柄,也就是說句柄有事件響應(yīng)時(shí),select需要遍歷所有句柄才能獲取到哪些句柄有polpol因此效率非常高。接下來正式安裝Nginx,首先需要安裝pcre#安裝pcre持rewrite也可以注*安裝源碼時(shí)指定路徑為源碼的路徑,而不是編譯后的路徑,否則會(huì)報(bào)(make[1***usr/local/pcre/MakefileError127誤yuminstallpcre-develpcrey#Nginx源碼包c(diǎn)dwgetc#解壓Nginx源碼包tar-xzfnginx- ,然后sed修改Nginx版本信息為WScdnginx-1.6.2;sed-i-e's/1.6.2//g'-e's/nginx\//WS/g'-e's/"NGINX"/"WS"/g'src/core/nginx.h#預(yù)編譯 -- prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module#.configure譯成功后,執(zhí)行make令進(jìn)行編譯#make行成功后,執(zhí)行makeinstall正式安make#自此Nginx裝完 - 檢查nginx置文件是否正確OK正[root@localhost~]#/usr/local/nginx/sbin/nginx-nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisoknginx:configurationfile/usr/local/nginx/conf/nginx.confsuccessful[root@localhost~]#然后啟動(dòng)nginx,/usr/local/nginx/sbin/nginx回車即可。查看進(jìn)程是[root@localhost~]#ps-ef|grep 538130285 0May16? 00:04:31nginx:worker 2014? 00:00:00nginx:masterprocess/usr/local/nginx/sbin/nginx 3226032220 012:34pts/0 00:00:00grepnginx[root@localhost~]#Nginx用命令管理及升級(jí)查看nginx進(jìn)程ps-ef|grep說明:nginx的進(jìn)程由主進(jìn)工作進(jìn)程組成。啟動(dòng)nginx啟動(dòng)結(jié)果顯示nginx的主線工作線程,工作線程的數(shù)量nginx.conf的配置參數(shù)worker_processes關(guān)。平滑啟動(dòng)nginxkill-HUP`cat或nginx-s其中進(jìn)程文件路徑在配置文件nginx.conf中可以找到完美停止kill-QUIT`cat快速停止kill-TERM`cat或kill-INT`cat完美停止工作進(jìn)程(主要用于平滑升級(jí)kill-WINCH`cat強(qiáng)制停止nginxpkill-9nginx檢查對(duì)nginx.conf文件的修改是否正nginxtcetc/nginx/nginx.conf或者nginx停止nginxnginxsstop者pkillnginx查看nginx的版本信息nginx-v查看完整的nginx配置信nginx-Nginx升級(jí)方法:所需版本的Nginxwget獲取舊版本nginxconfigure/usr/local/nginx/sbin/nginx-編譯新版本的 cdnginx-1.4.2 -- -- with-http_stub_status_module--with-http_ssl_module備份舊版本的nginx可執(zhí)行文件,新版本的nginx這行文mv/usr/local/nginx/sbin/nginx cpobjs/nginx/usr/local/nginx/sbin/測(cè)試新版本nginx否/usr/local/nginx/sbin/nginx-平滑重啟升級(jí)kill `cat舊版本Nginxpid為oldbin這是舊版本和新版本的nginx時(shí)運(yùn)行,過一段時(shí)間等就nginx處理完用戶請(qǐng)求后,執(zhí)行下面操作從容關(guān)閉舊版本的Nginxkill-WINCH`cat決定是否升級(jí)到新版的kill–HUP`catusr/local/nginx/log/nginx.oldbin`##nginx在不重載配kill–QUIT`catusr/local/nginx/log/nginx.oldbin`關(guān)閉舊版驗(yàn)證nginx否升級(jí)成/usr/local/nginx/sbin/nginx–V顯示下圖則升級(jí)Nginx配置文件精講#定義Nginx行的用戶和用 www#啟動(dòng)進(jìn)程,通常設(shè)置成和cpu worker_cpu_affinity000000010000001000000100000010000010000001000000#為每個(gè)進(jìn)程分配cpu,上例中將8程分配到8cpu,當(dāng)然可以寫多個(gè),或者將一個(gè)進(jìn)程分配到多個(gè)cpu。worker_rlimit_nofile#這個(gè)指令是指當(dāng)一個(gè)nginx進(jìn)程打開的最多文件描述符數(shù)目,理論#開文件數(shù)(ulimit-n)與nginx進(jìn)程數(shù)相除,但是nginx分配請(qǐng)求并#,所以最好與ulimitn值保持一#全局錯(cuò)誤日志及PID #錯(cuò)誤日志定義等級(jí),[debug|info|notice|warn|error|crit] #一個(gè)nginx進(jìn)程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多開文件數(shù)(系統(tǒng)的值ulimitn)nginx程數(shù)相除,但是nginx配#所以建議與ulimitn值保持一致worker_rlimit_nofileevents{useepoll; #epoll路復(fù)用IO(I/OMultiplexing)中的式,但是僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性 #單個(gè)workerprocess進(jìn)程的最大并發(fā)數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù))multi_accepton;#盡可能多的接受}#設(shè)定http服務(wù)器,利用它的反向功能提供負(fù)載均衡支http#設(shè)定mime型,類型由mime.type件定 /usr/local/nginx/log/nginx/access.log; #sendfile指令指定nginx是否調(diào)用sendfile函數(shù)(zerocopy方式)來輸出文件,對(duì)于普通應(yīng)用必須設(shè)為on#如果用來進(jìn)行等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime. tcp_nopushon防止網(wǎng)絡(luò)阻塞keepalive_timeout60;#keepalive超時(shí)時(shí)間,客戶端到服務(wù)器端的連接持續(xù)有效時(shí)間,當(dāng)出現(xiàn)對(duì)服務(wù)器的后,繼請(qǐng)求時(shí),keepalive-timeout功能可避免建立或重新 on提高數(shù)據(jù)的實(shí)時(shí)響應(yīng)性#開啟gzip壓縮gzipon; 416k;gzip_http_versionp_level2級(jí)別大小,最9,值越小,壓縮后比例越小,CPU處理更快。#值越大,消耗CPU較高 gzip_varyclient_max_body_size10m; #允許客戶端請(qǐng)求的最大單文件client_body_buffer_size128k; proxy_connect_timeout90; proxy_send_timeout90; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代proxy_read_timeout90; proxy_buffer_size4k; proxy_buffers432k; #proxy_buffers頁平均在32k以下的話,這樣設(shè)置 #高負(fù)荷下緩沖大小 44k;client_header_buffer_size4k;#客戶端請(qǐng)求頭部的緩沖區(qū)大小,這個(gè)可以根據(jù)你的系統(tǒng)分頁小來設(shè)置,一般一個(gè)請(qǐng)求的頭部大小不會(huì)超過分頁大小可以用命令getconfPAGESIZE取得。open_file_cachemax=102400max數(shù)量,建議和打開文件數(shù)一致,native是指經(jīng)過多長(zhǎng)時(shí)間文件沒被請(qǐng)求后刪除緩存。open_file_cache_validopen_file_cache_min_uses1;#opn_f_ahe指令中的nate參數(shù)時(shí)間內(nèi)文件的最少使用次如果有一個(gè)文件在nateincludevhosts.conf;Nginx配置文件精講#這里為后端服務(wù)器wugk集群配置,根據(jù)后端實(shí)際情況修改即可,tdt_wugk為負(fù)載均衡名稱,可以任意指定#但必須跟vhosts.conf虛擬主機(jī)的pass段一致,否則不能轉(zhuǎn)發(fā)后端的請(qǐng)求。weight配置權(quán)重,在fail_timeout內(nèi)檢查max_fails次數(shù),upstreamtdt_wugk :8080weight=1max_fails=2fail_timeout=30s; :8081weight=1max_fails=2}server{#偵聽80 定義使 #設(shè)定本虛擬主機(jī)的日 #定義服務(wù)器的默認(rèn)

indexindex.phpindex.htmlindex.htm; location~ #定義服務(wù)器的默

indexindex.phpindex.html #定義首頁索引#以下是一些反向的配置proxy_next_upstreamhttp_502http_504errortimeout將請(qǐng)求轉(zhuǎn)發(fā)到upstream負(fù)載均衡池中的另一臺(tái)服務(wù)器,實(shí)現(xiàn)故障轉(zhuǎn)真實(shí)

#后端的Web服務(wù)器可以通過X-Forwarded-For獲取用proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr; X-Forwarded- #請(qǐng)求轉(zhuǎn)向后端定義均衡模}#定義錯(cuò)誤提示頁 500502503504/50x.html;location=/50x.html{ }#配置Nginx動(dòng)靜分離,定義的靜態(tài)頁面直接從Nginx發(fā)布目location~{root#expires定義用戶瀏覽器緩存的時(shí)間為3如果靜態(tài)頁面不常更新,可以設(shè)置更長(zhǎng),這樣可以節(jié)省帶寬和緩解服務(wù)器 }認(rèn)配置

#PHP請(qǐng)求全部轉(zhuǎn)發(fā)到FastCGI處理.使用FastCGIlocation~\.php${root/root;fastcgi_pass:9000;fastcgi_indexindex.php; include}#設(shè)定查看Nginx態(tài)的地location/NginxStatus{ }}}實(shí)戰(zhàn)線上Nginx站點(diǎn)在真實(shí)的服務(wù)器環(huán)境,為了充分利用服務(wù)器資源,一臺(tái)nginxweb服務(wù)器同時(shí)會(huì)配置N個(gè)虛擬主機(jī),即多個(gè)對(duì)于同樣一個(gè)80端口。然后服務(wù)器IP量很多,也可以配置基于多個(gè)IP應(yīng)同一個(gè)vi改nginx.confserver配置內(nèi)容如#virtualhostsconfig2014/5/18server{ location/{ index.html}server location/{ index.html}創(chuàng)建兩個(gè)不同的mkdir–pusr/local/nginx/html/{a,b},然后分別在兩個(gè)創(chuàng)建兩個(gè)不同的index.html頁面即可。通過客戶端配置hosts指向兩個(gè),然后在IE瀏覽器測(cè)試效果。企業(yè)實(shí)戰(zhàn)Nginx+Tomcat動(dòng)靜分離架Ngnx動(dòng)靜分離簡(jiǎn)單來說就是把動(dòng)態(tài)跟靜態(tài)請(qǐng)求分開,不能理解動(dòng)態(tài)請(qǐng)求跟靜態(tài)請(qǐng)求分開,可以理解成使用Ngnx處理靜態(tài)頁面,Tomat、sn出來動(dòng)態(tài)頁面。動(dòng)靜分離從目前實(shí)現(xiàn)角度來講大致分為兩種,一種是純粹的把靜態(tài)文件獨(dú)立成單獨(dú)的放在獨(dú)立的服務(wù)器上也是目前主流推的方案;另外法就是動(dòng)態(tài)跟靜態(tài)文件混合在一起發(fā)布,通過ngnx來分開。這樣也是本次課程要講解的,具體怎么來實(shí)現(xiàn)呢,如下圖,通過oaton指定不同的后綴名實(shí)現(xiàn)不同的請(qǐng)求轉(zhuǎn)發(fā)。通過expires數(shù)設(shè)置,可以使瀏覽器緩存過期時(shí)間,減少與服務(wù)器之前的請(qǐng)求和流量。具體Expires定義:是給一個(gè)資源設(shè)定一個(gè)過期即可,所以不會(huì)產(chǎn)生額外的流量。此種方法非常適合不經(jīng)常變動(dòng)的資源。(如果經(jīng)常更新的文件,不建議使用Exps來緩存),我這里設(shè)置d,表示在這3天之內(nèi)訪問這個(gè)UR服務(wù)器重新,返回狀態(tài)碼2。線上Nginx動(dòng)靜分離完整配置(實(shí)際環(huán)境中可以使用,如下為nginx.conf件內(nèi)容)userwwwwww;worker_processes8;worker_cpu_affinity000000010000001000000100000010000010000001000000pid/usr/local/nginx/nginx.pid;worker_rlimit_nofile102400;{useepoll;worker_connections102400;}{ fastcgi_intercept_errorson; server_names_hash_bucket_size128;client_header_buffer_size4k;large_client_header_buffers432k;client_max_body_size300m;sendfileon; keepalive_timeouttcp_nodelay4proxy_busy_buffers_size128k;proxy_temp_file_write_size128k;gzipon; 4p_level gzip_vary '$remote_addr-$remote_user[$time_local]"$request"'$status$body_bytes_sent"$http_referer"' jvm_web1 :8080weight=1max_fails=2fail_timeout=30s; :8081weight=1max_fails=2} jvm_web2 :8082weight=1max_fails=2fail_timeout=30s; :8083weight=1max_fails=2}include}如下為vhosts.conf容{ index.jspindex.htmlindex.htm; location{ proxy_set_headerHost proxy_set_headerX-Real-IP$remote_addr; X-Forwarded-proxy_pass}location~{proxy_set_headerHost proxy_set_headerX-Real-IP$remote_addr; X-Forwarded-proxy_pass}location~{root/data/webapps/wugk1; } /data/logs/jvm_web1/access.logmain; }{ index.jspindex.htmlindex.htm; location{ proxy_set_headerHost proxy_set_headerX-Real-IP$remote_addr; X-Forwarded-proxy_pass}location~{proxy_set_headerHost proxy_set_headerX-Real-IP$remote_addr; X-Forwarded-proxy_pass}location~{root/data/webapps/wugk2; } /data/logs/jvm_web2/access.logmain; }然后在創(chuàng)建如 - 配置后端Tomcat服務(wù)器,這里省略哦,分別啟動(dòng)4個(gè)tomcat或者2個(gè)tomcat對(duì)應(yīng)不同的均衡模塊ip和端口即可。最后檢查Nginx置是否正測(cè)試動(dòng)靜分離是否成功,之需要?jiǎng)h除后端tomcat服務(wù)器上的某個(gè)靜態(tài)文件,查看是否能,如果可以說明靜態(tài)資源nginx直接返回了,不走后端tomcat服務(wù)企業(yè)實(shí)戰(zhàn)Nginx+PHP(FastCGI)NginxTomcat/PHP構(gòu)優(yōu)PHP能優(yōu)一般我們是在/usr/local/php5/etc/php-fpm.conf這個(gè)文件里面進(jìn)行應(yīng)的配如果設(shè)置成static,php-fpm進(jìn)程數(shù)自始至終都是指定的數(shù)量,不再增加或減如果設(shè)置成dynamic,則php-fpm進(jìn)程數(shù)是動(dòng)態(tài)的,最開始是pm.start_servers定的數(shù)量,如果請(qǐng)求較多,則會(huì)自動(dòng)增加,保證空閑的進(jìn)程數(shù)不小于pm.min_spare_servers,如果進(jìn)程數(shù)較多,也會(huì)進(jìn)行相應(yīng)清理保證多余的進(jìn)程數(shù)不多于pm.max_spare_servers。這兩種不同的進(jìn)程管理方式,可以根據(jù)服務(wù)器的實(shí)際需求來進(jìn)行調(diào)整。這里先說一下涉及到這個(gè)的幾個(gè)參數(shù),他們分別是pmpm.max_children、pm.start_servers、pm.min_spare_servers和Pm表示使用那種方式,有兩個(gè)值可以選擇,就是static(靜態(tài))或者下面4參數(shù)的含義pm.max_children:靜態(tài)方式下開啟的php-fpm進(jìn)程數(shù)量。pm.start_servers:動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量。pm.min_spare_servers:動(dòng)態(tài)方式下的最小php-fpm進(jìn)程數(shù)量。pm.max_spare_servers:動(dòng)態(tài)方式下的最大php-fpm進(jìn)程數(shù)量如果dm置為static,那么其實(shí)只有pm.max_children個(gè)參數(shù)生效。系統(tǒng)會(huì)開啟設(shè)置數(shù)量的php-fpm進(jìn)程。如果dm設(shè)置為dynamic,那么pm.max_children參數(shù)失效,后面3個(gè)參數(shù)生效。系統(tǒng)會(huì)在php-fpm行開始的時(shí)候啟動(dòng)pm.start_serversphp-fpm進(jìn)程,然后根據(jù)系統(tǒng)的需求動(dòng)態(tài)在pm.min_spare_servers和pm.max_spare_servers之間調(diào)整php-fpm進(jìn)程數(shù)。其他優(yōu)化方CompilePHP’smodulesaslessaspossible,thesimplethebest盡量少安裝PHP模塊,最簡(jiǎn)單是最好(快)IncreasPHPFastCGIchildnumberto100andevenmore.Sometime,200isOK!(On4GBmemoryserver);2G的PHPFastCGI子進(jìn)程數(shù)調(diào)到100或以上在4G內(nèi)存的服務(wù)器上200就可以(建議壓力測(cè)試來得出自己服務(wù)器合理的值)UsingSOCKETPHPFastCGI,andputinto/dev/shmonsocket連接FastCGI,/dev/shm是內(nèi)存文件系統(tǒng),socket放在內(nèi)存中IncreaseLinux“maxopenfiles,usingthefollowingcommand(mustbeLinux下增加文件打開數(shù),命令如下cat>>/etc/security/limits.confsoftnprochardnprocsoftnofilehardnofileIncreasePHP-FPMopenfiledescription增加PHP-FPM打開文件描述符的限制:#vi$php_install_dir/etc/php-fpm.confrlimit_files=51200 code And“cache_dir”to/dev/shmon使用php代碼,例如eAccelerator,XCache、APC在Linux平臺(tái)上可以把`cache_dir`指向/dev/shm/usr/local/php/etc/php-fpm.conf重要優(yōu)化參數(shù)詳解pm=pm參數(shù)指定了進(jìn)程管理方式,有兩種可供選擇:statc或dnamc,phpfpm并不是真的就不變);而動(dòng)態(tài)的則在運(yùn)行過程中動(dòng)態(tài)調(diào)整,當(dāng)然并不是的創(chuàng)建新進(jìn)程,受pm.max_spa_svrs參數(shù)影響;動(dòng)態(tài)適合小內(nèi)存機(jī)器,靈活一般php-fpm占用20~30m右的內(nèi)存就按30m如果單獨(dú)跑php-fpm,動(dòng)態(tài)方式起始值可設(shè)置物理內(nèi)存Mem/30M,由于大家一般Nginx、MySQL都在一臺(tái)機(jī)器上,于是預(yù)留一半給它們,即php-pm=dynamicpm.max_childrenpm.start_servers=pm.min_spare_servers=pm.max_spare_servers=rlimit_files=pm.max_requests102400Tomcat性能優(yōu)化線上環(huán)境使用默認(rèn)tomcat配置文件,性能很一般,為了滿足大量用戶的,需要對(duì)tomcat進(jìn)行參數(shù)性能優(yōu)化,具體優(yōu)化的地方如Linux內(nèi)核的優(yōu)服務(wù)器資源配置的優(yōu)Tomcat參數(shù)優(yōu)配置負(fù)載集群這里著重講解tomcat參數(shù)的優(yōu)化:server.xml文件,關(guān)閉DNS查詢、maxThreads:tomcat起動(dòng)的最大線程數(shù),即同時(shí)處理的任務(wù)個(gè)數(shù),默認(rèn)值為200acceptCount:當(dāng)tomcat起動(dòng)的線程數(shù)達(dá)到最大時(shí),接受排隊(duì)的請(qǐng)個(gè)數(shù),默認(rèn)值為試的基礎(chǔ)上來不斷的調(diào)優(yōu)分析。<Connectorport="8080"URIEncoding="UTF-8"/>catalina.shJVM參數(shù)優(yōu)化,添加如下內(nèi)容CATALINA_OPTS="$CATALINA_OPTS-Xms4000M-Xmx4000M-- -- -DLOCALE=UTF--DRAMDISK=/-DUSE_RAM_DISK=ture-配置多個(gè)tomcat實(shí)例,方法也很簡(jiǎn)單,只需要在服務(wù)器上cp多個(gè) 為了提升整個(gè)的性能,還需要在tomcat前面架設(shè)nginxweb反 Nginx配置優(yōu)化及深入講隨著量的不斷增加,需要對(duì)Nginx和內(nèi)核做相應(yīng)的優(yōu)化來滿足高并發(fā)用戶的,那下面在單臺(tái)Nginx服務(wù)器來優(yōu)化相關(guān)參數(shù) Nginx.conf配置優(yōu)化worker_processesnginx進(jìn)程數(shù),建議按照cpu數(shù)目來指定,一般為它的倍數(shù)worker_cpu_affinity000000010000001000000100000010000010000001000000為每個(gè)進(jìn)程分配cpu,上例中將8個(gè)進(jìn)程分配到8個(gè)cpu,當(dāng)然可以個(gè)進(jìn)程分配到多個(gè)cpu。worker_rlimit_nofile102400;這個(gè)指令是指當(dāng)一個(gè)nginx程打開的最多文件描述符數(shù)目,理論值開文件數(shù)(ulimit-n)與nginx程數(shù)相除,但是nginx配請(qǐng)求并不,所以最好與ulimitn值保持一use使用epoll的I/O模型。epoll是Linux內(nèi)核為處理大批量文件描述符po,它能顯著提高程序在大量并發(fā)連接中量活躍的情況下的系統(tǒng)CPU利用率worker_connections每個(gè)進(jìn)程允許的最多連接數(shù),理論上每nginx務(wù)器的最大連接數(shù)keepalive_timeout60;keepalive超時(shí)端到服務(wù)器端的連接持續(xù)有效時(shí)間,當(dāng)出現(xiàn)對(duì)繼請(qǐng)求時(shí),keepalive-timeout功能可避免建立或重新建立連接client_header_buffer_size置,一般一個(gè)請(qǐng)求的頭部大小不會(huì)超過1k,不過由于一般系統(tǒng)分頁都要大于1k,分頁大小。分頁大小可以用命令getconfPAGESIZE取得open_file_cachemax=102400這個(gè)將為打開文件指定緩存默認(rèn)是沒有啟用的,max指定緩存數(shù)量,文件數(shù)一致,inactive是指經(jīng)過多長(zhǎng)時(shí)間文件沒被請(qǐng)求后刪除緩存open_file_cache_valid這個(gè)是指多長(zhǎng)時(shí)間檢查一次緩存的有效信息open_file_cache_min_usesopen_file_cache中的inactive數(shù)時(shí)間內(nèi)文件的最少使用如件在nate時(shí)間內(nèi)一次沒被使用,它將被移除 Linux內(nèi)核參數(shù)優(yōu)net.ipv4.tcp_max_tw_buckets=10000timewait的數(shù)量,默認(rèn)是180000。net.ipv4.ip_local_port_range102465000net.ipv4.tcp_tw_recycle=1啟用timewait速回收net.ipv4.tcp_tw_reuse=開啟重用。允許將TIME-WAITsockets新用于新的TCP接net.ipv4.tcp_syns=開啟SYNs,當(dāng)出現(xiàn)SYN等待隊(duì)列溢出時(shí),啟用s來處Nginx用配置參數(shù)有upstream,主要用于均衡后端多個(gè)實(shí)例:Nginx的upstream目前支持5種算法分配方式:輪詢(默認(rèn)每個(gè)請(qǐng)求按時(shí)間順序逐一分配到后端不同的服務(wù)器,如果后端某臺(tái)服務(wù)器down掉,自動(dòng)剔除,待恢復(fù)自動(dòng)添加上。Weight指定輪詢權(quán)重,權(quán)重越高,處理的請(qǐng)求就越多,weight和比每個(gè)請(qǐng)求根據(jù)的IP的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題,一般用于登錄會(huì)話。fair(第按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分url_hash(第upstream的fail_timeout和max_fails參數(shù)是用來判斷負(fù)載均衡upstream某個(gè)server否失fail_timeout時(shí)間內(nèi),nignxupstream某個(gè)server接嘗試失敗了max_fails,則nginx認(rèn)server失效。在接下來的fail_timeout時(shí)間內(nèi),nginx不再將請(qǐng)求分發(fā)給失效的server。例如在nginx.conf面配置如下的tdt_app衡upstreamtdt_appserver1:8080weight=1max_fails=2fail_timeout=30s;server2:8080weight=1max_fails=2}Tdt_app均衡兩臺(tái)后端JAVA務(wù),在30內(nèi)nginx會(huì)與后端某個(gè)server通信檢測(cè)連接失敗2Nginx會(huì)認(rèn)為該已經(jīng)失效,然后踢出轉(zhuǎn)發(fā)列表,然后在接下來的30s內(nèi),nginx不講請(qǐng)求轉(zhuǎn)發(fā)給失效的server另外,fail_timeout設(shè)置的時(shí)間對(duì)響應(yīng)時(shí)間沒影響,這個(gè)響應(yīng)時(shí)間是用proxy_connect_timeout和proxy_read_timeout來控制的。proxy_connect_timeoutNginx后端服務(wù)器連接的超時(shí)時(shí)間,發(fā)起握pox_ad_tmot:連接成功后_等候后端服務(wù)器響應(yīng)時(shí)間,其實(shí)已(時(shí)間)。pox_snd_tmot:后端服務(wù)器數(shù)據(jù)回傳時(shí)間,在規(guī)定時(shí)間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù)。NginxRewriteRewrite則含義就是某個(gè)URL寫成特定的URL,從某種意義上說Rewrite則的最后一項(xiàng)參數(shù)為flag支持的flag記主要有以下last:相當(dāng)于Apache里的(L)標(biāo)記,表示完成break;本條規(guī)則匹配完成后,終止匹配,不再匹配后面的redirect:返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的地permanent:返回301重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后URLlastbreak實(shí)現(xiàn)URL地址欄URL變例如用戶,想直接跳轉(zhuǎn)到下面的某個(gè)頁面dex.html如何來實(shí)現(xiàn)呢我們可以使用NginxRewrite來實(shí)現(xiàn)這個(gè)需求,具體如下:在server中加入如下語句即可: *代表前面0或個(gè)字+代表前面1或個(gè)字?代表前面01個(gè)字^代表字符串的開始位$代表字符串結(jié)束的位。為通配符,代表任何字例如多個(gè)跳轉(zhuǎn)到同一個(gè),nginxrewrite規(guī)則寫法如下{listen if($host!= ’)rewrite }深入的rewrite繼續(xù)學(xué)習(xí)NginxRewrite構(gòu)建Nginx衡LAMP務(wù)NP(nx+Ngnx+pah+s+PHP)架構(gòu)受到很多IT企業(yè)的青睞,取代了原來認(rèn)為很好的NP(Linx+Ngnx+s+PHP)架構(gòu),那我們說NAP到底有什么優(yōu)點(diǎn)呢,還得從Ngnx和apahe的優(yōu)缺點(diǎn)說起。Nginx理靜態(tài)文件能力很強(qiáng),Apache理動(dòng)態(tài)文件很強(qiáng)而且很穩(wěn)定,把二者綜合在一塊,性能提升很多倍??赡芎芏郘inuxSA在從事LNMP運(yùn)維中,會(huì)發(fā)現(xiàn)PHP(FastCGI)模式會(huì)出現(xiàn)一些502錯(cuò)誤的現(xiàn)象,這是因?yàn)镹ginx+PHP(FastCGI)組合不穩(wěn)定的原因造成的。源碼安裝LNAMP prce- ;cdnginx-1.6.0;./configure–prefix=/usr/local/nginx&&make&&make源碼安裝LNAMPyuminstallapr-develapr-util-devel /apache/httpd/httpd-2.2.27.tar.gz;tarxzfhttpd-2.2.27.tar.gz;cdhttpd-2.2.27;./configureenable-so--enable-rewrite&&make&&make源碼安裝LNAMP /archives/mysql-5.1/mysql-5.1.63.tar.gz;tar mysql- mysql- --prefix=/usr/local/mysql--enable-assembler&&make&&make配置Mysql務(wù)為系統(tǒng)服cp cp/usr/local/mysql/share/mysql/mysql.server/etc/rc.d/init.d/mysqldchkconfig--addmysqldchkconfig--level345mysqldoncd/usr/local/mysqluseraddchown-Rmysql.mysql/usr/local/mysql/bin/mysql_install_db--user=mysqlchown-Rmysql /usr/local/mysql/bin/mysqld_safe--user=mysql源碼安裝LNAMPcd/usr/src;wgethttp: /php/php-5.3.28.tar.bz2;tarjxfphp-5.3.28.tar.bz2;cdphp-5.3.28;./configurewith-config-filewithwith-源碼安裝Apache+PHP整合apache+php環(huán)境修改httpd.conf配置文件然后加入如下語句: php5_modulemodules/libphp5.so(默認(rèn)已存在) application/x-httpd-php.phpDirectoryIndexindex.phpindex.htmlindex.php入index.html前 下創(chuàng)建index.php測(cè)試頁面執(zhí)行cat>>/usr/local/apache/htdocs/index.php重新啟動(dòng)apache服務(wù),通過IP 界面如下圖,即代表LAMP環(huán)境源碼安裝discuz源碼包文件,然后解壓: /usr/src 解 程序包: -重命名程序文件:cdusr/local/apache/htdocs/;mvupload/*賦予discuz 權(quán)限:cd/usr/local/apache/htdocs/; 777-Rdata/uc_server/config/uc_client/然 IP安裝 ,如下圖,選擇“我同意進(jìn)入如下界面,數(shù)據(jù)庫安裝,如果不存在則需要新建數(shù)據(jù)庫 數(shù)據(jù)庫創(chuàng)建 命令如下createdatabasediscuzgrantallondiscuz.*toroot@'localhost'identifiedby點(diǎn)擊下一步,直至安裝完成,進(jìn)入等待已久 畫面自此LAMP環(huán)境整合并搭建成功,那如何使用Nginx來整合呢源碼安裝Nginx+LAMP先修改 端口為8080,Nginx端口為80然后修改nginx配置文件:vi/配置段內(nèi)容如(定義upstream均衡模塊,配置動(dòng)靜分離,動(dòng)態(tài)轉(zhuǎn)發(fā)至apache,靜態(tài)upstreamapp_lamp :8080weight=1max_fails=2}server location/{ index.phpindex.htmlindex.htm;}location~{proxy_set_headerHost proxy_set_headerX-Real-IP$remote_addr; X-Forwarded-proxy_pass}~{ }}測(cè)試,nginxip+port如下圖所示查看系統(tǒng)啟動(dòng)的端口及進(jìn)程如下圖自此,LNAMP全部整合完畢,接下來就是對(duì)系統(tǒng)內(nèi)核、各個(gè)服務(wù)、Nginx日志分析及編在我們?nèi)粘5倪\(yùn)維中,當(dāng)Nginx服務(wù)器正常運(yùn)行后,我們會(huì)經(jīng)常密切關(guān)注 日志的相關(guān)情況發(fā)現(xiàn)有異常的日志信息需要行及時(shí)處理那今天我將跟大家一起來研究和分析Nginx志,nginx認(rèn)日志路徑為:/usr/local/nginx/logs/access.log和error.log文件。如下圖查看nginx日志:ccess.log|moreNginx日志的格式一般在nginx.conf里面配置,常見的格式配置如下 '$remote_addr-$remote_user[$time_local]"$request"'$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"'; 格式說$remote_addr$remote_addr,$http_x_forwarded_for記錄客戶端IP$remote_user記錄客戶端用戶$request記錄請(qǐng)求的URLHTTP$status記錄請(qǐng)求狀$body_bytes_sent發(fā)送給客戶端的字節(jié)數(shù),不包括響應(yīng)頭的大?。辉撟兞颗cApache模塊mod_log_config里的“%B”參數(shù)兼容。$bytes_sent$bytes_sent$connection_requests當(dāng)前通過$http_referer記錄從哪個(gè)頁面$http_user_agent$request_length請(qǐng)求的長(zhǎng)度(包括請(qǐng)求行,請(qǐng)求頭和請(qǐng)求正文)$request_timeNginx日志分析需分析截止目前為止量最高的IPawk'{print$1}'/usr/local/nginx/logs/access.log|sort|uniq-c|sort-|head-分析從早上9點(diǎn)至中午12點(diǎn)總的量分析上一秒的請(qǐng)求數(shù)找到當(dāng)前日志中502者404誤的頁面并統(tǒng)awk'{print$0}'/usr/local/nginx/logs/access.log|egrep"404|502"|awk'{print$1,$7,$9}'|more通過編寫實(shí)現(xiàn)自動(dòng)分析Nginx異常并加入首先要判斷什么是呢我們可以定義為每秒請(qǐng)求一個(gè)URL20的IP可以封掉Nginx日志切割案例Ngnx是一個(gè)非常輕量的b服務(wù)器,體積小、性能高、速度快等諸多優(yōu)點(diǎn)但不足的是也存在缺點(diǎn)比如在產(chǎn)生的日志文一直就是一個(gè)不會(huì)自動(dòng)地進(jìn)行切割如果量很大的話將會(huì)導(dǎo)么龐大的一個(gè)日志文件,那需要手動(dòng)對(duì)這個(gè)文件進(jìn)行切割。如果日志非常大不便于我們每天查看相關(guān)的異常日志。在nx平臺(tái)上S豐富,使用S加ontab命令能非常方便地進(jìn)行切割今天我將跟大家一起來寫一個(gè)企業(yè)環(huán)境中使用的Nginx自動(dòng)切換的功能,就是定時(shí)切割日志,這里切割的方法我們直接使mv可直接上內(nèi)容如下#automvnginxlogs#byauthorwugkD_LOG=/data/backup/`date+%Y%m%d`echo-e"\033[32mPleasewaitstartcutsscripts...\033[1m"sleep2if[!-d$D_LOGmkdir- mv kill-USR1`catecho echo"TheNginxlogCuttingecho"Youcanaccessbackupnginxlog$D_LOG/access.log執(zhí)行如下圖最后在crontab中添加如下代碼即可,每天晚上自動(dòng)去切割日志 ** Nginx防盜鏈配置案例配、 繞過別人放有利益的最終頁直接在自己的有有利益的頁面上向最終用戶提供此內(nèi)容。常常是一些名不見經(jīng)傳的小 軟件的地址)然后放置在自己 中,通過這種方法盜取 的空間和流量、 防盜鏈其實(shí)就是采用服務(wù)器端編程,通過url過濾技術(shù)實(shí)現(xiàn)的防比如 /download/keepalived.conf這個(gè)載地址如果沒有裝防盜鏈別人就能輕而易舉的在他的上這個(gè)地址。防盜鏈的定義此內(nèi)容不在自己服務(wù)器上而通過技術(shù)繞別人放有利益的最終頁直接在自己的有有利益的頁面上向最終用戶提供此內(nèi)容。常常是一些名不見經(jīng)傳的、 、Nginxserver+防盜鏈配置如下:server{ location/{ index.html}location~*\.(gif|jpg|png|swf|flv)$valid_referersnoneblocked if($invalid_referer)#rewrite^/ht return403;}}}第一行:gif|jpg|png|swf|flv表示對(duì)gif、jpg、png、swf、flv后綴第二行 表示 這個(gè)來路進(jìn)行判f{}里面內(nèi)容的意思是,如果來路不是指定來路就跳轉(zhuǎn)到錯(cuò)誤頁面,當(dāng)然直接返回3也是可以?;蛘呷缦略O(shè)置也可以location~*if($host ’)return}防盜鏈測(cè)試找一臺(tái)測(cè)試機(jī)器,新建如下html頁面,代碼如<h1>TESTNginx<img 然后在本地配置hosts指向 即可然 如下圖即代表Nginx防盜鏈配置成功Nginx運(yùn)維日常故障Nginx衡TCP議服務(wù)器案Nginx在企業(yè)運(yùn)維中通常用來均衡HTTP協(xié)議,例如我們熟知 等服務(wù)。因?yàn)榇蟛糠值姆?wù)都是http請(qǐng)求 那有時(shí)候需要用到TCP協(xié)議,如果來實(shí)現(xiàn)均衡呢?默認(rèn)nginx不支持tcp的負(fù)載均衡,需要打補(bǔ)丁,(連接方式:從 接下來正式配置Nginx衡TCP:源碼主頁 分別兩個(gè)軟件包,然后unzipmaster.zip解壓后如下圖tarxvfnginx-1.6.2.tar.gzcdnginx-1.6.2patch-p1</root/nginx_tcp_proxy_module- -- --withwith-make編譯完成后,如下圖:(有TCP模塊參數(shù)nginx.conf置http之前添加tcpupstreamcluster{#simpleround-robinserverserver }serverlisten8888;proxy_passcluster;}}2345求構(gòu)建企業(yè)級(jí)Nginx+Keepalived集群架隨著Nginx在國(guó)內(nèi)的發(fā)展潮流,越來越多的互聯(lián)網(wǎng)公司都在使用NginxNginx高性能、穩(wěn)定性成為IT青睞的http和反向服務(wù)器,今天我們來實(shí)戰(zhàn)構(gòu)建Nginx+Keepalived可用架構(gòu)配下為網(wǎng)絡(luò)一、環(huán)境準(zhǔn)系統(tǒng)環(huán)境:CentOS6.5x86_64Nginx版本:nginxv1.6.2Keepalived版本:keepalivedv1.2.1Nginx-1:(Master)Nginx-2:0(Backup)二、Nginx安裝配分別在兩臺(tái)服務(wù)器安裝Nginx、keepalived,如下yuminstallypcre-devel安裝perl兼容的正規(guī)表達(dá)式tar-xzfnginx-1.6.2.tar.gz&&cdnginx-1.6.2;sed-i-e's/1.6.2//g'-e's/nginx\//TDTWS/g'-e's/"NGINX"/"TDTWS"/g'src/core/nginx.h&&./configure--prefix=/usr/local/nginx--user=wwwwith-http_stub_status_module--with-三、Keepalived安裝配tar-xzvfkeepalived-1.2.1.tar.gz&&cdkeepalived-1.2.1&&./configure&&make&&makeinstallDIR=/usr/local/;cp$DIR/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/;cp$DIR/etc/sysconfig/keepalived/etc/sysconfig/mkdirpetc/keepalivedcp$DIR/sb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論