Linux高階運維(四) 常見Nginx優化

2021-09-25 13:31:17 字數 3681 閱讀 8739

常見nginx優化

一:自定義報錯頁面

1)優化前,客戶端使用瀏覽器訪問不存在的頁面,會提示404檔案未找到

[root@client ~]# firefox //訪問乙個不存在的頁面

2)修改nginx配置檔案,自定義報錯頁面

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

… …charset utf-8; //僅需要中文時需要改選項,可選項

error_page 404 /404.html; //自定義錯誤頁面

… …[root@proxy ~]# vim /usr/local/nginx/html/404.html //生成錯誤頁面

oops,no no no page …

[root@proxy ~]# nginx -s reload

3)優化後,客戶端使用瀏覽器訪問不存在的頁面,會提示自己定義的40x.html頁面

[root@client ~]# firefox //訪問乙個不存在的頁面

4)常見http狀態碼

二:如何檢視伺服器狀態資訊(非常重要的功能)

1)編譯安裝時使用–with-http_stub_status_module開啟狀態頁面模組

[root@proxy ~]# tar -zxvf nginx-1.12.2.tar.gz

[root@proxy ~]# cd nginx-1.12.2

[root@proxy nginx-1.12.2]# ./configure \

–with-http_ssl_module //開啟ssl加密功能

–with-stream //開啟tcp/udp**模組

–with-http_stub_status_module //開啟status狀態頁面

[root@proxy nginx-1.12.2]# make && make install //編譯並安裝

2)啟用nginx服務並檢視監聽埠狀態

ss命令可以檢視系統中啟動的埠資訊,該命令常用選項如下:

[root@proxy ~]# /usr/local/nginx/sbin/nginx

[root@proxy ~]# netstat -anptu | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* listen 10441/nginx

[root@proxy ~]# ss -anptu | grep nginx

3)修改nginx配置檔案,定義狀態頁面

[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf

… …location /status

… …[root@proxy ~]# nginx

4)優化後,檢視狀態頁面資訊

[root@proxy ~]# curl

active connections: 1

server accepts handled requests

10 10 3

reading: 0 writing: 1 waiting: 0

active connections:當前活動的連線數量。

accepts:已經接受客戶端的連線總數量。

handled:已經處理客戶端的連線總數量。

(一般與accepts一致,除非伺服器限制了連線數量)。

requests:客戶端傳送的請求數量。

reading:當前伺服器正在讀取客戶端請求頭的數量。

writing:當前伺服器正在寫響應資訊的數量。

waiting:當前多少客戶端在等待伺服器的響應。

三 優化nginx 併發量

1ab -c 10000 -n 10000 高併發測試)

wc -l /usr/local/nginx/logs/access.log

併發量沒有固定值 :cpu 電腦效能,頻寬 流量

靜態資料(nginx jpg *** mp4)

動態( mginx 指令碼 php :1cpu 2 **質量)

2 修改nginx配置檔案,增加併發量

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

worker_processes 2; //與cpu核心數量一致

events

dourl=url

vv

urlv

i=$i

done

curl $url

[root@proxy ~]# ./buffer.sh

3 重啟[root@proxy ~]# nginx -s reload

4 測試

[root@client ~]# firefox

六 日誌切割

日誌檔案越來越大怎麼辦?單個檔案10g? 如何切割?(非常常見的面試題

步驟:1. 把舊的日誌重新命名

2. kill usr1 pid(nginx的程序pid號)

1)手動執行

備註:/usr/local/nginx/logs/nginx.pid #檔案中存放的是nginx的程序pid號。

[root@proxy ~]# mv access.log access2.log #`改名

[root@proxy ~]# kill -usr1 $(cat /usr/local/nginx/logs/nginx.pid) #kill 作用傳遞訊號給程序

kill -l 64種選擇

kill 程序號 預設15 kill ->殺死

kill -9 程序號 強制殺死

kill -19 sigstop -睡覺

kill -18 sigcont -醒來

ls 驗證檢視

2)自動完成

每週5的03點03分自動執行指令碼完成日誌切割工作。

[root@proxy ~]# vim /usr/local/nginx/logbak.sh

#!/bin/bash

date=date +%y%m%d

logpath=/usr/local/nginx/logs

mv $logpath/access.log log

path

/acc

ess−

logpath/access-

logpat

h/ac

cess

−date.log

mv $logpath/error.log log

path

/err

or

−logpath/error-

logpat

h/er

ror−

date.log

kill -usr1 $(cat $logpath/nginx.pid)

[root@proxy ~]# crontab -e

03 03 * * 5 /usr/local/nginx/logbak.s

here, the apache error log and access log are interlineated.

在這裡,把apache錯誤日誌和訪問日誌合併在一起。

步驟八:伺服器記憶體快取

1)如果需要處理大量靜態檔案,可以將檔案快取在記憶體,下次訪問會更快。

快取到記憶體,啟動速度會特別快

Linux運維 高階指令

df 作用 檢視磁碟的空間 df h h 以較高可讀性展示大小 free 作用 檢視記憶體使用情況 free m m 以兆m為單位的形式顯示。這裡用 h可能會被四捨五入 作用 檢視乙個檔案的前n行,如果不指定n,則預設顯示前10行。n表數字 head n 檔案路徑 head 5 install.lo...

Linux高階運維命令(awk)

awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指gawk,gawk...

Linux高階運維命令(sed)

sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作。sed命令列格式為 sed nefri command 輸入文字sed n 2000,p fname lesssed n 2016 06 09 p catalina.out...