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