安裝過(guò)程在下面的文章當中,里面詳細的介紹了Nginx服務(wù)的安裝過(guò)程。
Nginx編譯安裝詳細過(guò)程
Nginx啟??刂频霓k法中一共有兩種方法可以用來(lái)對Nginx服務(wù)的進(jìn)行啟停操作。
Nginx服務(wù)的啟??刂?/a>
使用壓力測試來(lái)對網(wǎng)頁(yè)進(jìn)行高并發(fā)測試,就能看出WEB服務(wù)器的并發(fā)量,這里使用Apache自帶的ab壓力測試工具進(jìn)行測試。
ab壓力測試的安裝、使用、破2萬(wàn)并發(fā)測試
高并發(fā)(High Concurrency)通常是指通過(guò)設計保證系統能夠同時(shí)并行處理很多請求。通俗來(lái)講,高并發(fā)是指在同一個(gè)時(shí)間點(diǎn),有很多用戶(hù)同時(shí)的訪(fǎng)問(wèn)同一 API 接口或者 Url 地址。它經(jīng)常會(huì )發(fā)生在有大活躍用戶(hù)量,用戶(hù)高聚集的業(yè)務(wù)場(chǎng)景中。
Nginx優(yōu)化的方法有三種,第一種是優(yōu)化Linux內核參數,使內核變的更為強大,第二種是優(yōu)化Nginx配置文件,使Nginx變的更加強大,第三種是擴展服務(wù)器的CPU和內存,使服務(wù)器變的更加強大。
Linux內核參數優(yōu)化
vim /etc/sysctl.conf #修改內核參數文件添加:net.core.netdev_max_backlog = 262144 #每個(gè)網(wǎng)絡(luò )接口接收數據包的速率比內核處理這些包的速率快時(shí),允許發(fā)送到隊列的數據包的最大數目net.core.somaxconn = 262144 #調節系統同時(shí)發(fā)起的TCP連接數net.ipv4.tcp_max_orphans = 262144 #設定系統中最多允許存在多少tcp套接字不被關(guān)聯(lián)到任何一個(gè)用戶(hù)文件句柄上net.ipv4.tcp_max_syn_backlog = 262144 #記錄的那些尚未收到客戶(hù)端確認信息的連接請求的最大值net.ipv4.tcp_tw_recycle = 1 #開(kāi)啟TCP連接中TIME-WAIT sockets的快速回收net.ipv4.tcp_tw_reuse = 1 #允許將TIME-WAIT sockets重新用于新的TCP連接net.ipv4.tcp_syncookies = 0 #當出現SYN等待隊列溢出時(shí),禁用cookies來(lái)處理net.ipv4.tcp_synack_retries = 1 #設置內核放棄TCP連接之前向客戶(hù)端發(fā)送SYN+ACK包的數量net.ipv4.tcp_ack_retries = 1 #該參數的作用與上一個(gè)參數類(lèi)似,設置內核放棄建立連接之前發(fā)送SYN包的數量sysctl -p #執行操作Nginx配置文件優(yōu)化
vim /usr/local/nginx/conf/nginx.conf覆蓋(根據里面的參數進(jìn)行修改):全局域:worker_processes 8; #工作進(jìn)程數worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000; #指定cpu內核來(lái)運行工作進(jìn)程,我的是四核CPU,所以是這樣,如果是八核CPU就是00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000,以次類(lèi)推worker_rlimit_nofile 65535; #工作進(jìn)程最大打開(kāi)文件數event域:use epoll; #使用epoll事件驅動(dòng)模型worker_connections 65535; #工作進(jìn)程最大連接數multi_accept on; #設置工作進(jìn)程同時(shí)接收多個(gè)網(wǎng)絡(luò )連接http域:sendfile on; #允許sendfile方式傳輸文件send_timeout 10s; #設置服務(wù)器和客戶(hù)端連接超時(shí)時(shí)間client_header_buffer_size 4k; #客戶(hù)端請求頭部的緩沖區大小tcp_nopush on; #在一個(gè)數據包里發(fā)送所有頭文件,而不一個(gè)接一個(gè)的發(fā)送tcp_nodelay on; #不要緩存數據keepalive_timeout 0; #服務(wù)器和客戶(hù)端保持活動(dòng)的時(shí)間是65秒,60秒后服務(wù)器和客戶(hù)端斷開(kāi)連接,高并發(fā)時(shí)可以設置為0擴展服務(wù)器的CPU和內存
這個(gè)就不在這里說(shuō)了,這個(gè)大家都懂的操作,再說(shuō)就沒(méi)意義了。無(wú)非就是聯(lián)系廠(chǎng)商增加CPU和內存,或者自己買(mǎi)CPU和內存,是云上的就擴展CPU和內存就可以了。
測試結果
看下圖,本地測試時(shí)可以支持2.5w(個(gè)人PC4核8G)的并發(fā)數了,真實(shí)環(huán)境的話(huà)肯定沒(méi)有這么多,因為還有很多因素,比如網(wǎng)絡(luò )問(wèn)題、服務(wù)器性能等。