摘要:壓力測(cè)試工具請(qǐng)求數(shù)并發(fā)數(shù)請(qǐng)求是一個(gè)高性能的和反向代理服務(wù),也是一個(gè)服務(wù)。
壓力測(cè)試工具:ab
ab -n 請(qǐng)求數(shù) -c 并發(fā)數(shù) 請(qǐng)求urlNginx:
Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理服務(wù),也是一個(gè)IMAP/POP3/SMTP服務(wù)。
特點(diǎn):IO多路復(fù)用epoll
輕量級(jí)
CPU親和(affinity):把每個(gè)worker進(jìn)程固定在一個(gè)cpu上執(zhí)行,減少切換cpu的cache miss,獲得更好的性能
sendfile:靜態(tài)文件不經(jīng)過(guò)用戶空間,直接通過(guò)內(nèi)核進(jìn)行傳輸
版本分類(lèi)Mainline version 開(kāi)發(fā)版(有更新的功能,但不一定穩(wěn)定)
Stable version 穩(wěn)定版(經(jīng)過(guò)測(cè)試,有更好的穩(wěn)定性)
Legacy version 歷史版本
nginx -V
查看nginx版本及編譯的模塊信息
nginx -t -c .conf文件路徑
檢查配置文件語(yǔ)法是否正確
nginx -s reload -c .conf文件路徑
重啟配置文件
#運(yùn)行用戶 user nobody; #啟動(dòng)進(jìn)程,通常設(shè)置成和cpu的數(shù)量相等 worker_processes 1; #全局錯(cuò)誤日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工作模式及連接數(shù)上限 events { #epoll是多路復(fù)用IO(I/O Multiplexing)中的一種方式, #僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性能 use epoll; #單個(gè)后臺(tái)worker process進(jìn)程的最大并發(fā)鏈接數(shù) worker_connections 1024; # 并發(fā)總數(shù)是 worker_processes 和 worker_connections 的乘積 # 即 max_clients = worker_processes * worker_connections # 在設(shè)置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什么 # 為什么上面反向代理要除以4,應(yīng)該說(shuō)是一個(gè)經(jīng)驗(yàn)值 # 根據(jù)以上條件,正常情況下的Nginx Server可以應(yīng)付的最大連接數(shù)為:4 * 8000 = 32000 # worker_connections 值的設(shè)置跟物理內(nèi)存大小有關(guān) # 因?yàn)椴l(fā)受IO約束,max_clients的值須小于系統(tǒng)可以打開(kāi)的最大文件數(shù) # 而系統(tǒng)可以打開(kāi)的最大文件數(shù)和內(nèi)存大小成正比,一般1GB內(nèi)存的機(jī)器上可以打開(kāi)的文件數(shù)大約是10萬(wàn)左右 # 我們來(lái)看看360M內(nèi)存的VPS可以打開(kāi)的文件句柄數(shù)是多少: # $ cat /proc/sys/fs/file-max # 輸出 34336 # 32000 < 34336,即并發(fā)連接總數(shù)小于系統(tǒng)可以打開(kāi)的文件句柄總數(shù),這樣就在操作系統(tǒng)可以承受的范圍之內(nèi) # 所以,worker_connections 的值需根據(jù) worker_processes 進(jìn)程數(shù)目和系統(tǒng)可以打開(kāi)的最大文件總數(shù)進(jìn)行適當(dāng)?shù)剡M(jìn)行設(shè)置 # 使得并發(fā)總數(shù)小于操作系統(tǒng)可以打開(kāi)的最大文件數(shù)目 # 其實(shí)質(zhì)也就是根據(jù)主機(jī)的物理CPU和內(nèi)存進(jìn)行配置 # 當(dāng)然,理論上的并發(fā)總數(shù)可能會(huì)和實(shí)際有所偏差,因?yàn)橹鳈C(jī)還有其他的工作進(jìn)程需要消耗系統(tǒng)資源。 # ulimit -SHn 65535 } http { #設(shè)定mime類(lèi)型,類(lèi)型由mime.type文件定義 include mime.types; default_type application/octet-stream; #設(shè)定日志格式 log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; access_log logs/access.log main; #sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來(lái)輸出文件, #對(duì)于普通應(yīng)用,必須設(shè)為 on, #如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用,可設(shè)置為 off, #以平衡磁盤(pán)與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime. sendfile on; #tcp_nopush on; #連接超時(shí)時(shí)間 #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #開(kāi)啟gzip壓縮 gzip on; gzip_disable "MSIE [1-6]."; #設(shè)定請(qǐng)求緩沖 client_header_buffer_size 128k; large_client_header_buffers 4 128k; #設(shè)定虛擬主機(jī)配置 server { #偵聽(tīng)80端口 listen 80; #定義使用 www.nginx.cn訪問(wèn) server_name www.nginx.cn; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置 root html; #設(shè)定本虛擬主機(jī)的訪問(wèn)日志 access_log logs/nginx.access.log main; #默認(rèn)請(qǐng)求 location / { #定義首頁(yè)索引文件的名稱 index index.html index.htm; 如果能找到指定的 uri 那么就返回相應(yīng)的內(nèi)容,否則的話返回錯(cuò)誤狀態(tài)碼 404 try_files $uri $uri/ =404; } # 定義錯(cuò)誤提示頁(yè)面 error_page 500 502 503 504 /50x.html; location = /50x.html { } #靜態(tài)文件,nginx自己處理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { #過(guò)期30天,靜態(tài)文件不怎么更新,過(guò)期可以設(shè)大一點(diǎn), #如果頻繁更新,則可以設(shè)置得小一點(diǎn)。 expires 30d; } #禁止訪問(wèn) .htxxx 文件 location ~ /.ht { deny all; } } }日志類(lèi)型
error.log
格式:error_log log_file level;
錯(cuò)誤日志,保存nginx運(yùn)行中的錯(cuò)誤信息
access.log
格式:access_log log_file log_format定義名稱(固定輸出格式);
訪問(wèn)日志,保存訪問(wèn)信息
http請(qǐng)求變量:
arg_PARAMETER
http_HEADER(如:http_user_agent)
sent_http_HEADER
內(nèi)置變量
自定義變量
常用模塊http_sub_status_module nginx客戶端的狀態(tài)(可以配置在server和location下)
stub_status;
具體使用結(jié)果:https://blog.csdn.net/echizao...
http_sub_module HTTP內(nèi)容替換(http|server|location)
sub_filter string(要替換的內(nèi)容) replacement(替換的內(nèi)容); sub_filter_once off;默認(rèn)為on 默認(rèn)匹配所有內(nèi)容,on只匹配一次 sub_filter_last_modified on;默認(rèn)為off 判斷服務(wù)器文件是否發(fā)生過(guò)變更,不變更則不重新加載
http_random_index_module 目錄中選擇一個(gè)隨機(jī)主頁(yè)(配置在location中)
random_index on;默認(rèn)為off
limit_conn_module 連接頻率限制
limit_conn_zone key zone=name:size;(http) limit_conn zone number;(http|server|location)
limit_req_modele 請(qǐng)求頻率限制
limit_req_zone key zone=name:size rate=rate;(http) 如:limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s; limit_req zone=name [burst=number](延遲數(shù)) [nodelay];(httpserverlocation)
http_access_module 基于ip的控制訪問(wèn)(通過(guò)$remote_addr實(shí)現(xiàn),代理模式就失去了作用,x-forword-for,geo模塊,自定義變量解決)
allow address | CIDR(網(wǎng)段) | unix: | all;(httpserverlocationlimit_except) deny address | CIDR | unix: | all;(httpserverlocationlimit_except)
http_auth_basic_module 基于用戶的信任登錄(弊端解決:1結(jié)合lua實(shí)現(xiàn)高效驗(yàn)證,2利用nginx-auth-ldap模塊,實(shí)現(xiàn)nginx和ldap打通)
auth_basic string | off;默認(rèn)off(httpserverlocationlimit_except); auth_basic_user_file file;(httpserverlocationlimit_except); file為一個(gè)用戶名密碼文件 file生成方式:htpasswd -c 文件名 用戶名 然后就會(huì)讓輸入兩次密碼 命令在httpd-tools中
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40335.html
摘要:時(shí)間年月日星期六說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個(gè)新的文件層??蛇x指定此鏡像啟動(dòng)時(shí)默認(rèn)執(zhí)行命令??蛇x用于指定需要暴露的網(wǎng)絡(luò)端口號(hào)??蛇x向鏡像中掛載一個(gè)卷組。 時(shí)間:2017年09月16日星期六說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無(wú) 學(xué)習(xí)源碼:無(wú) 第一章:課程簡(jiǎn)介 1-1 課程介紹 Docke...
摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉(cāng)庫(kù)拿現(xiàn)成的使用。以接下來(lái)要構(gòu)建的環(huán)境來(lái)說(shuō)明下,下面我將要搭建一個(gè)的開(kāi)發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷(xiāo)毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機(jī)的端口。 以前一直使用 Vagrant 作為自己的開(kāi)發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開(kāi)發(fā)環(huán)境,保障公司使用的是同一套開(kāi)發(fā)環(huán)境。隨著docker的流...
摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉(cāng)庫(kù)拿現(xiàn)成的使用。以接下來(lái)要構(gòu)建的環(huán)境來(lái)說(shuō)明下,下面我將要搭建一個(gè)的開(kāi)發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷(xiāo)毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機(jī)的端口。 以前一直使用 Vagrant 作為自己的開(kāi)發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開(kāi)發(fā)環(huán)境,保障公司使用的是同一套開(kāi)發(fā)環(huán)境。隨著docker的流...
閱讀 3093·2021-11-22 09:34
閱讀 593·2021-11-22 09:34
閱讀 2437·2021-10-08 10:18
閱讀 3372·2021-09-22 15:57
閱讀 2585·2021-09-22 15:25
閱讀 2398·2019-08-30 15:54
閱讀 2093·2019-08-30 15:44
閱讀 1799·2019-08-29 11:18