幸运PK10APP

  • <input id="yd5s6"><acronym id="yd5s6"><li id="yd5s6"></li></acronym></input>
  • <code id="yd5s6"><cite id="yd5s6"></cite></code>
  • <var id="yd5s6"><output id="yd5s6"></output></var>

  • <code id="yd5s6"></code>

    <code id="yd5s6"></code>

    360源碼屋(www.50154.cn)精品網站源碼,織夢模版,游戲源碼分享平臺
    當前位置:網站首頁 VIP資源 網站搭建 正文

    Nginx 軟件層面加強Nginx性能優化的面試問答和解決方案

    時間:2020-03-05 21:28:49 [網站搭建]作者:360源碼屋

    Nginx 軟件層面加強Nginx性能優化的面試問答和解決方案

    去年我去愛卡汽車面試PHP,一輪和二輪面的都不錯,在三輪面到Nginx的時候很多問題當時不知道怎么回答,確實沒有深入學習過,花了一段時間的學習,終于能解答Nginx高性能優化的問題了,10月24號為了獲得程序員勛章,發布了半個優化筆記,瀏覽到了1000+,受到這個鼓舞,我抽時間在仔細整理下關于Nginx性能優化的問題,我們從軟件說起。


    360網站源碼總結:從軟件層面提升硬件使用效率


    增大CPU的利用率

    增大內存的利用率

    增大磁盤I/O的利用率

    增大網絡帶寬的利用率

    增大CPU的利用率

    1、增大Nginx使用CPU的有效時長


    能夠使用全部CPU資源

    master-worker多進程架構

    worker進程數量應當大于等于CPU核數

    Nginx進程間不做無用功浪費CPU資源

    worker進程不應在繁忙時,主動讓出CPU

    worker程間不應由于爭搶造成資源耗散

    worker進程數量應當等于CPU核數

    worker進程不應調用_些店1導致主動讓出CPU

    拒絕類似的第三方模塊

    不被其他進程爭搶資源

    提升優先級占用CPU更長的時間

    減少操作系統上耗資源的非Nginx進程

    設置worker進程數的技巧和原理:worker進程數量應當大于等于CPU核數,并不是說worker進程數量設置的越大越好,他正確的設置方法應該是CPU核數和CPU核數的倍數,這樣在CUP運行時(宏觀上并行,微觀上串行,把進程的運行時間分為一段段的時間片),這樣能最大的利用CPU的資源。


    Syntax: worker processes number auto;

    Default: worker_processes 1;

    Context: main

    1

    2

    3

    但不是設置的數值越大就越好,CPU的執行還受到運行時間片的影響,OS調度系統依次選擇每個進程,最多執行時間片指定的時長,因為業務、或者是硬盤處理速度的不匹配,阻塞API引發的時間片內主動讓出CPU要在減少進程間切換下功夫。


    程間切換,就是是指CPU從一個進程或線程切換到另一個進程或線程。查看上下文切換次數的命令有Vmstat,Dstat,Pidstat -w。


    設置Priority動態優先級,決定CPU時間片的大小,設置worker進程的靜態優先級。


    Syntax: worker priority number;

    Default: worker_priority 0;

    Context: main

    1

    2

    3

    CPU依托NUMA架構,我們常說一級緩存,二級緩存,三級緩存,Nginx提高性能的點在于提升CPU緩存命中率,綁定worker到指定CPU。


    worker_processes     4;

    worker_cpu_affinity 01 10 01 10;

    1

    2

    滑動窗口:Nginx在網絡傳輸上的優化

    活動窗口功能:用于限制連接的網速,解決報文 舌L序和可靠傳輸問題,Nginx中limitrate等限速指令皆 依賴它實現,由操作系統內核實現,連接兩端各有發送窗口與接收窗。


    nginx的超時指令與滑動窗口,主動斷開連接,釋放網絡傳輸資源。


    兩次讀操作間的超時


    Default: client_body_timeout 60s;

    Context: http, server, location

    1

    2

    兩次寫操作間的超時


    Default: send_timeout 60s;

    Context: http, server, location

    1

    2

    以上兩者兼具:


    Default: proxy_timeout 10m;

    Context: http, server, location

    1

    2

    主動建立連接時應用層超時時間,盡早釋放CPU資源。


    proxy_connect_timeout 60s; 

    Context:http, server, location

    1

    2

    也不是說Nginx設置的處理鏈接數越多越好,可能會造成服務器的SYN攻擊。當SYN隊列滿后,新的SYN不進入隊列,計算出cookie再以 SYN+ACK中的序列號返回客戶端,正??蛻舳税l報文時,服 務器根據報文中攜帶的cookie重新恢復連接。


    net.ipv4.tcp_syncookies = 1

    1

    設置worker進程最大連接數量,包括Nginx與上游、下游間的連接。


    Syntax: worker_connections_number;

    Default: worker_connections 512;

    Context: events

    1

    2

    3

    Nginx在增大網絡帶寬的利用率上的優化

    當Nginx處理完成調用close關閉連接后,若接收緩沖區仍然收到客戶端發來的 內容,則服務器會向客戶端發送RST包關閉連接,導致客戶端由于收到RST而忽略了http response。


    Default: lingering_close on;

    Context: http, server, location

    1

    2

    當功能啟用時,最長的讀取用戶請求內容的時長,達到后立刻關閉連接。


    Default: lingering_time 30s;

    Context: http, server, location

    1

    2

    當功能啟用時,最長的讀取用戶請求內容的時長,達到后立刻關閉連接。


    Default: lingering_timeout 5s;

    Context: http, server, location

    1

    2

    以RST代替正常的四次握手關閉連接,當其他讀、寫超時指令生效引發連接關閉時,通過發送RST立刻釋放端口、內 存等資源來關閉連接。


    Default: reset_timedout_connection off;

    Context: http, server, location

    1

    2

    TLS/SSL優化握手性能,


    ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

    Context: http, server


    off 不使用Session緩存,且Nginx在協議中明確告訴客戶端Session緩存不被使用

    none 不使用Session緩存

    builtin 使用Openss啲Session緩存,由于在內存中使用,所以僅當同一客戶端的兩次連接都命中到 同一 worker進程時,Session緩存才會生效

    shared:name:size 定義共享內存,為所有worker進程提供Session緩存服務。IMB大約可用于4000個Session

    1

    2

    3

    4

    5

    6

    7

    HTTP長連接,減少握手次數,通過減少并發連接數減少了服務器資源的消耗,降低TCP擁塞控制的影響


    Default: keepalive_requests 100;

    Context: http, server, location

    ————————————————



    本文標簽:AutoTags插件服務端需要您提供購買者的賬號和密碼才能繼續訪問  福利活動  自由織夢  織夢貓  秀站網  跟版網  dede58  莎莎源碼  折翼天使 

    轉載請注明來源:Nginx 軟件層面加強Nginx性能優化的面試問答和解決方案

    本文永久鏈接地址:http://www.50154.cn/9643.html

    鄭重聲明:
    本站所有內容均由互聯網收集整理、網友上傳,并且以計算機技術研究交流為目的,僅供大家參考、學習,不存在任何商業目的與商業用途。
    若您需要商業運營或用于其他商業活動,請您購買正版授權并合法使用。 我們不承擔任何技術及版權問題,且不對任何資源負法律責任。
    如無法鏈接失效或侵犯版權,請給我們來信:han2311678@163.com

    幸运PK10APP
    本溪县| 平谷| 金川| 长岛| 丁青| 宽城| 嵊山| 桓仁| 广德| 平坝| 鞍山| 怀安| 周至| 错那| 沿河| 启东| 塔中| 伊春| 湖州| 彰武| 沂南| 石门| 福州| 饶平| 清原| 孙吴| 贵溪| 新都| 乌恰| 阳高| 拐子湖| 盐池| 蔡家湖| 乾县| 沐川| 平山| 分宜| 石台| 中甸| 凉城| 索伦| 平泉| 漾鼻| 潜江| 阿克苏| 双流| 盖州| 和政| 南涧| 岗子| 范县| 乌鲁木齐牧试站| 广元| 双柏| 绥中| 灵川| 蓬溪| 新野| 栾城| 安福| 白杨沟| 青龙| 福山| 祁东| 肃南| 宿松| 南充| 西昌| 湘阴| 澄迈| 常州| 潞城| 宁安| 柳州| 全南| 沙雅| 滦南| 长乐| 南川| 洪泽| 波密| 鄂州| 平罗| 海西| 乾县| 乌拉特前旗| 西青| 定南| 叶城| 宾阳| 颍上| 荣昌| 渑池| 喀喇沁旗| 特克斯| 华池| 全南| 苍溪| 张北| 辽中| 土默特右旗| 通道| 武都| 木垒| 塔中| 松江| 五道梁| 和静| 台前| 德格| 汕尾| 兴文| 东兴| 南澎岛| 吴县| 横峰| 东乡| 平凉| 通辽钱家店| 澄海| 藁城| 邳州| 中山| 郯城| 通许| 富顺| 晋宁| 北流| 新竹市| 桐乡| 大冶| 岷县| 嫩江| 金山| 金沙| 射阳| 交城| 寿县| 永胜| 五莲| 大陈| 荣县| 密山| 桓仁| 洪雅| 无为| 栖霞| 兖州| 营口| 吉水| 治多| 察哈尔右翼后旗| 庆城| 洪雅| 桓台| 澄海| 满城| 青龙山| 阜南| 普定| 阜城| 乌审旗| 玉田| 东沟| 三门| 托托河| 睢宁| 穆棱| 建始| 康平| 诺木洪| 常德| 通化县| 南京| 达日| 永登| 合水| 乌鲁木齐牧试站| 单县| 围场| 上思| 新安| 东岗| 长兴| 塔什库尔干| 聂拉木| 荣昌| 松溪| 道真| 丽江| 五指山| 盐山| 达坂城| 雷州| 息烽| 远安| 吉县| 松潘| 襄城| 钟山| 荥阳| 乡城| 北宁| 平遥| 枝江| 恩施| 三穗| 达州| 武平| 淮阴| 中牟| 武乡| 石阡| 额尔古纳| 魏山| 江西沟| 淮南| 逊克| 灵宝| 麻江| 北塔山| 芦山| 伊通| 索伦| 朝克乌拉| 肥乡| 石家庄| 甘泉| 武川| 思南| 应县| 和龙| 沙雅| 瑞安| 阿尔山| 都昌| 曲江| 云县| 西乌珠穆沁旗| 临高| 文安| 文昌| 双辽| 怀宁| 衢州| 单县| 望谟| 无棣| 万安| 城口| 容城| 曹妃甸| 澧县| 永仁| 万州天城| 威海| 漠河| 江城| 泗县| 塔什库尔干| 望江| 巩义| 青浦| 崇阳| 泸定| 那仁宝力格| 灵邱| 永昌| 南海| 兴安| 蒲城| 泽普| 新县| 隆德| 宜川| 河南| 木兰| 博爱| 兴县| 涡阳| 梁平| 乌鲁木齐牧试站| 丹徒| 峨眉山| 沾化| 黑山头| 大冶| 乌鲁木齐牧试站| 拐子湖| 正阳| 塔城| 内邱| 若尔盖| 长乐| 呼和浩特市郊区| 温泉| 建瓯| 奈曼旗| 全椒| 北川| 城步| 翁源| 通江| 河间| 乐亭| 通辽| 合川| 上犹| 石河子| 多伦| 桃源| 沈丘| 双城| 富蕴| 宁德| 翁源| 稻城| 贺州| 西昌| 新干| 丰县| 塔城| 伊金霍洛旗| 那曲| 赤峰| 崇仁| 榆林| 彭山| 魏县| 祁连| 汇川| 徐家汇| 阿克苏| 常宁| 腾冲| 贵港| 乌伊岭| 博克图| 周村| 平利| 建平县| 波阳| 临江| 甘谷| 荣昌| 平定| 托里| 宜昌| 武夷山| 长安| 通辽| 科尔沁左翼后旗| 忻城| 达川| 吕泗| 洛隆| 五指山| 双柏| 白河| 蒲江| 石楼| 余姚| 麻阳| 镶黄旗| 郏县| 宜都| 彭山| 崇庆| 星子| 西峰| 常州| 拉孜| 凌云| 房山| 温岭| 武宣| 温岭| 大埔| 讷河| 盐山| 茫崖| 新宁| 浦东| 望奎| 五常| 沧源| 道孚| 章丘| 永署礁| 织金| 镇原| 大邑| 苏尼特左旗| 四会| 涿州| 玛沁| 唐河| 拐子湖| 瑞丽| 安达