国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

使用Node.js配合Ngi,nx實現高負載網絡

2019-11-02 14:31:50
字體:
來源:轉載
供稿:網友

   這篇文章主要介紹了使用Node.js配合Nginx實現高負載網絡,Node的異步加上Nginx的反向代理在性能上實在是給力!需要的朋友可以參考下

  在搭建高吞吐量web應用這個議題上,NginX和Node.js可謂是天生一對。他們都是基于事件驅動模型而設計,可以輕易突破Apache等傳統web服務器的C10K瓶頸。預設的配置已經可以獲得很高的并發,不過,要是大家想在廉價硬件上做到每秒數千以上的請求,還是有一些工作要做的。

  這篇文章假定讀者們使用NginX的HttpProxyModule來為上游的node.js服務器充當反向代理。我們將介紹Ubuntu 10.04以上系統sysctl的調優,以及node.js應用與NginX的調優。當然,如果大家用的是Debian系統,也能達到同樣的目標,只不過調優的方法有所不同而已。

  網絡調優

  如果不先對Nginx和Node.js的底層傳輸機制有所了解,并進行針對性優化,可能對兩者再細致的調優也會徒勞無功。一般情況下,Nginx通過TCP socket來連接客戶端與上游應用。

  我們的系統對TCP有許多門限值與限制,通過內核參數來設定。這些參數的默認值往往是為一般的用途而定的,并不能滿足web服務器所需的高流量、短生命的要求。

  這里列出了調優TCP可供候選的一些參數。為使它們生效,可以將它們放在/etc/sysctl.conf文件里,或者放入一個新配置文件,比如/etc/sysctl.d/99-tuning.conf,然后運行sysctl -p,讓內核裝載它們。我們是用sysctl-cookbook來干這個體力活。

  需要注意的是,這里列出來的值是可以安全使用的,但還是建議大家研究一下每個參數的含義,以便根據自己的負荷、硬件和使用情況選擇一個更加合適的值。

   代碼如下:

  net.ipv4.ip_local_port_range='1024 65000'

  net.ipv4.tcp_tw_reuse='1'

  net.ipv4.tcp_fin_timeout='15'

  net.core.netdev_max_backlog='4096'

  net.core.rmem_max='16777216'

  net.core.somaxconn='4096'

  net.core.wmem_max='16777216'

  net.ipv4.tcp_max_syn_backlog='20480'

  net.ipv4.tcp_max_tw_buckets='400000'

  net.ipv4.tcp_no_metrics_save='1'

  net.ipv4.tcp_rmem='4096 87380 16777216'

  net.ipv4.tcp_syn_retries='2'

  net.ipv4.tcp_synack_retries='2'

  net.ipv4.tcp_wmem='4096 65536 16777216'

  vm.min_free_kbytes='65536'

  重點說明其中幾個重要的。

   代碼如下:

  net.ipv4.ip_local_port_range

  為了替上游的應用服務下游的客戶端,NginX必須打開兩條TCP連接,一條連接客戶端,一條連接應用。在服務器收到很多連接時,系統的可用端口將很快被耗盡。通過修改net.ipv4.ip_local_port_range參數,可以將可用端口的范圍改大。如果在/var/log/syslog中發現有這樣的錯誤: “possible SYN flooding on port 80. Sending cookies”,即表明系統找不到可用端口。增大net.ipv4.ip_local_port_range參數可以減少這個錯誤。

  代碼如下:

  net.ipv4.tcp_tw_reuse

  當服務器需要在大量TCP連接之間切換時,會產生大量處于TIME_WAIT狀態的連接。TIME_WAIT意味著連接本身是關閉的,但資源還沒有釋放。將net_ipv4_tcp_tw_reuse設置為1是讓內核在安全時盡量回收連接,這比重新建立新連接要便宜得多。

   代碼如下:

  net.ipv4.tcp_fin_timeout

  這是處于TIME_WAIT狀態的連接在回收前必須等待的最小時間。改小它可以加快回收。

  如何檢查連接狀態

  使用netstat:

   代碼如下:

  netstat -tan | awk '{print $6}' | sort | uniq -c

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼木县| 万全县| 长垣县| 沙湾县| 正阳县| 吉水县| 瑞丽市| 成武县| 商水县| 平邑县| 东莞市| 高碑店市| 淮滨县| 内黄县| 浏阳市| 麻江县| 昌乐县| 宁德市| 昌都县| 余干县| 扎鲁特旗| 天峻县| 海淀区| 仙居县| 金堂县| 商洛市| 崇文区| 富蕴县| 开平市| 沾化县| 盐边县| 泰州市| 辽宁省| 逊克县| 清河县| 南溪县| 镇江市| 开封市| 孝感市| 旬邑县| 泽库县|