nginx性能優化的一些方面javascript
1、顯示版本號:不安全php
curl -I http://192.168.4.60,查看版本信息, css
修改配置文件:html
http {java
server_tokens off; //把nginx版本信息關掉了linux
2、併發量,linux系統內核和nginx配置文件nginx
在nginx配置文件和系統內核中,對併發作了限制,如今來修改:
json
nginx配置文件:vim
worker_processes 1; //進程數,和CPU的內核相關瀏覽器
events {
worker_connections 80000;
}
系統內核:(限制文件,進程,用戶數量) ss -ntup | grep nginx //查看實時併發數,最大支持2W
ulimit -a //查看各限制的參數
ulimit -Hn 100000 ulimit -Sn 100000 //在命令行修改
-s //軟限制 (普通用戶能夠修改)n 最大文件數量
-H //硬限制 (普通用戶不可修改) n 最大文件數量
當前有效,重啓服務器後失效,要永久更改 vim /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
3、解決頭部信息過長,出現錯誤提示:414,緩存不夠
client_header_buffer_size 1k; //默認請求包頭信息的緩存
large_client_header_buffers 4 1m; //大請求包頭部信息的緩存個數與容量
4、nginx壓縮(速度,流量)
gzip on; //開啓壓縮功能,因此瀏覽器都支持
gzip_min_length 1000; //至少1000個字節才壓縮
gzip_comp_level 4; //壓縮比率1-9
gzip_types text/plain text/css application/json application/x-javascript text/xml
application/xml application/xml+rss text/javascript;
//對什麼格式的文件壓縮,通常選擇文檔壓縮:doc,html,css,php,pdf,xls
mime.types //支持文件壓縮格式的文件,能夠在裏面查找相應的選項
5、用戶的瀏覽器緩存數據
nginx告訴瀏覽器,把全部的照片緩存30天,不會變化的數據,mp3,mp4,jpg
修改配置文件:
location / {
root html;
index index.html index.htm;
}
location ~ \.(gpg|png)$ {
expires 300d; //自定義緩存300天
}
6、自定義報錯頁面
charset UTF-8; // 更改字符集
error_page 404 /error.html; //自定義頁面
7、優化 Linux 內核參數
/etc/sysctl.conf是一個容許你改變正在運行中的Linux系統的接口。
它包含一些TCP/IP堆棧和虛擬內存系統的高級選項,可用來控制Linux網絡配置,
因爲/proc/sys/net目錄內容的臨時性,建議把TCPIP參數的修改添加到/etc/sysctl.conf文件,
而後保存文件,使用命令「/sbin/sysctl –p」使之當即生效。具體修改方案參照上文:
fs.file-max = 999999
#表示單個進程最大能夠打開的句柄數;
net.ipv4.tcp_tw_reuse = 1
#參數設置爲 1 ,表示容許將TIME_WAIT狀態的socket從新用於新的TCP連接,
這對於服務器來講意義重大,由於總有大量TIME_WAIT狀態的連接存在;
ner.ipv4.tcp_keepalive_time = 600
#當keepalive啓動時,TCP發送keepalive消息的頻度;
默認是2小時,將其設置爲10分鐘,能夠更快的清理無效連接。
net.ipv4.tcp_fin_timeout = 30
#當服務器主動關閉連接時,socket保持在FIN_WAIT_2狀態的最大時間
net.ipv4.tcp_max_tw_buckets = 5000
#這個參數表示操做系統容許TIME_WAIT套接字數量的最大值,
若是超過這個數字,TIME_WAIT套接字將馬上被清除並打印警告信息。
#該參數默認爲180000,過多的TIME_WAIT套接字會使Web服務器變慢。
net.ipv4.ip_local_port_range = 1024 65000
#定義UDP和TCP連接的本地端口的取值範圍。
net.ipv4.tcp_rmem = 10240 87380 12582912
#定義了TCP接受緩存的最小值、默認值、最大值。
net.ipv4.tcp_wmem = 10240 87380 12582912
#定義TCP發送緩存的最小值、默認值、最大值。
net.core.netdev_max_backlog = 8096
#當網卡接收數據包的速度大於內核處理速度時,
會有一個列隊保存這些數據包。這個參數表示該列隊的最大值。
net.core.rmem_default = 6291456
#表示內核套接字接受緩存區默認大小。
net.core.wmem_default = 6291456
#表示內核套接字發送緩存區默認大小。
net.core.rmem_max = 12582912
#表示內核套接字接受緩存區最大大小。
net.core.wmem_max = 12582912
#表示內核套接字發送緩存區最大大小。
注意:以上的四個參數,須要根據業務邏輯和實際的硬件成原本綜合考慮;
net.ipv4.tcp_syncookies = 1
#與性能無關。用於解決TCP的SYN***。
net.ipv4.tcp_max_syn_backlog = 8192#這個參數表示TCP三次握手創建階段
接受SYN請求列隊的最大長度,默認1024,將其設置的大一些能夠
使出現Nginx繁忙來不及accept新鏈接的狀況時,Linux不至於丟失客戶端發起的連接請求。
net.ipv4.tcp_tw_recycle = 1
#這個參數用於設置啓用timewait快速回收。
net.core.somaxconn=262114
# 選項默認值是128,這個參數用於調節系統同時發起的TCP鏈接數,
在高併發的請求中,默認的值可能會致使連接超時或者重傳,所以須要結合高併發請求數來調節此值。
net.ipv4.tcp_max_orphans=262114
#選項用於設定系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。
若是超過這個數字,孤立連接將當即被複位並輸出警告信息。
這個限制指示爲了防止簡單的DOS***,不用過度依靠這個限制甚至認爲的減少這個值,更多的狀況是增長這個值。