1. 檢視核心版本
因為2.6以上的核心才支援epoll,nginx的高併發的特性依賴epolluname -a
「linux com.guang 3.10.0-514.16.1.el7.x86_64 #1 smp wed apr 12 15:04:24 utc 2017 x86_64 x86_64 x86_64 gnu/linux」
2. 安裝gcc
因為nginx是c寫的yum list gcc
「gcc.x86_64 4.8.5-11.el7 @base」
gcc -v
「gcc version 4.8.5 20150623 (red hat 4.8.5-11) (gcc) 「
3. 安裝gcc-c++
使用c++來編寫nginx http模組yum list gcc
「gcc-c++.x86_64 4.8.5-11.el7 @base」
4. 安裝pcre
pcre,perl 相容的正規表示式,如果想要在編寫的模組中使用正則,那麼需要安裝此軟體.反之亦然(不用則不裝)yum install -y pcre pcre-devel
太麻煩了,一次說完吧
yum list gccyum list gcc
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
zlib的作用: zlib庫用於對http包的內容做gzip格式的壓縮, 如果我們在nginx.conf裡配置了gzip on,並指定對於某些型別(content-type) 的http響應使用gzip來進行壓縮以減少網路傳輸量, 那麼, 在編譯時就必須把zlib編譯進nginx
openssl的作用: 如果我們的伺服器不只是要支援http, 還需要在更安全的ssl協議上傳輸http, 那麼就需要擁有openssl了。 另外, 如果我們想使用md5、 sha1等雜湊函式, 那麼也需要安裝它
nginx源**存放目錄nginx編譯階段產生的中間檔案存放目錄
部署目錄
日誌檔案存放目錄
只針對最通用的、 使nginx支援更多併發請求的tcp網路引數
修改/etc/sysctl.conf
fs.file-max = 999999
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024
61000
net.ipv4.tcp_rmem = 4096
32768
262142
net.ipv4.tcp_wmem = 4096
32768
262142
net.core
.netdev_max_backlog = 8096
net.core
.rmem_default = 262144
net.core
.wmem_default = 262144
net.core
.rmem_max = 2097152
net.core
.wmem_max = 2097152
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn.backlog=1024
sysctl-p
這幾個引數其實很常見耶
難怪我覺得眼熟,原來就是描述http的一些引數
file-max: 這個引數表示程序(比如乙個worker程序) 可以同時開啟的最大控制代碼數, 這個引數直接限制最大併發連線數, 需根據實際情況配置。
tcp_tw_reuse: 這個引數設定為1, 表示允許將time-wait狀態的socket重新用於新的tcp連線, 這對於伺服器來說很有意義, 因為伺服器上總會有大量time-wait狀態的連線。
tcp_keepalive_time: 這個引數表示當keepalive啟用時, tcp傳送keepalive訊息的頻度。預設是2小時, 若將其設定得小一些, 可以更快地清理無效的連線。
tcp_fin_timeout: 這個引數表示當伺服器主動關閉連線時, socket保持在fin-wait-2狀態的最大時間。
tcp_max_tw_buckets: 這個引數表示作業系統允許time_wait套接字數量的最大值,如果超過這個數字, time_wait套接字將立刻被清除並列印警告資訊。 該引數預設為180000, 過多的time_wait套接字會使web伺服器變慢。
tcp_max_syn_backlog: 這個引數表示tcp三次握手建立階段接收syn請求佇列的最大長度, 預設為1024, 將其設定得大一些可以使出現nginx繁忙來不及accept新連線的情況時,linux不至於丟失客戶端發起的連線請求
ip_local_port_range: 這個引數定義了在udp和tcp連線中本地(不包括連線的遠端)埠的取值範圍。
net.ipv4.tcp_rmem: 這個引數定義了tcp接收快取(用於tcp接收滑動視窗) 的最小值、 預設值、 最大值。
net.ipv4.tcp_wmem: 這個引數定義了tcp傳送快取(用於tcp傳送滑動視窗) 的最小值、 預設值、 最大值。
netdev_max_backlog: 當網絡卡接收資料報的速度大於核心處理的速度時, 會有乙個佇列儲存這些資料報。 這個引數表示該佇列的最大值。
rmem_default: 這個引數表示核心套接字接收快取區預設的大小。
wmem_default: 這個引數表示核心套接字傳送快取區預設的大小。
rmem_max: 這個引數表示核心套接字接收快取區的最大大小。
wmem_max: 這個引數表示核心套接字傳送快取區的最大大
《深入理解nginx》總結
一些指標 和nginx有關的核心調優 可以修改 etc sysctl.conf來更改核心引數調優 nginx為訪問第三方服務做的優化 在用nginx開發模組時,如果需要訪問第三方服務,不能自己簡單的用套接字程式設計,會破壞nginx全非同步架構。nginx提供了兩種全非同步通訊方式 upstream...
深入理解Nginx 閱讀筆記 一
眾所周知,apache lighttpd tomcat jetty iis等都是著名的web伺服器 這裡就不詳細介紹這幾個伺服器了,有興趣的可以自己查資料 那為什麼我要特意學習nginx呢?最重要的原因當然是 網際網路公司 尤其是杭州的某個電商公司 面試的時候可以瞎xx吹一波,顯得自己很叼 開玩笑的...
深入理解C語言 深入理解指標
關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...