成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Nginx啟動(dòng)配置加載性能分析:作為http服務(wù)器

運(yùn)維 系統(tǒng)運(yùn)維
本文測(cè)試了在配置文件規(guī)模較大時(shí), Nginx作為http服務(wù)器的啟動(dòng)速度,并分析耗時(shí)原因。

本文測(cè)試了在配置文件規(guī)模較大時(shí), Nginx作為http服務(wù)器的啟動(dòng)速度,并分析耗時(shí)原因。

結(jié)論:

1. Nginx初始化中影響性能點(diǎn)在于listen IP:PORT, 其中port的匯聚會(huì)造成初始化速度變得很慢

2. 對(duì)于Server_name的初始化相當(dāng)快, 對(duì)初始化性能無(wú)影響

一、測(cè)試內(nèi)容

腳本創(chuàng)建3類配置文件, 規(guī)則如下:

1. 共創(chuàng)建2萬(wàn)條Server{}配置

2. server_name基本定長(zhǎng), PerformanceTestxxx

3. 第1類是listen的IP完全一致,port全不同, 配置文件實(shí)例:

  1. http{ 
  2. server{ 
  3. listen 192.168.0.1:8080; 
  4. server_name PerformanceTest8080; 
  5. … 
  6. server{ 
  7. listen 192.168.0.1:8081; 
  8. server_name PerformanceTest8081; 
  9. …. 

3. 第2類是listen的Port完全一致,IP全不同, 配置文件實(shí)例:

  1. http{ 
  2. server{ 
  3. listen 192.168.0.1:80; 
  4. server_name PerformanceTest1; 
  5. … 
  6. server{ 
  7. listen 192.168.0.2:80; 
  8. server_name PerformanceTest2; 
  9. …. 

4. 第3類是listen的IP:PORT完全一致, server_name全不同, 配置文件實(shí)例:

  1. http{ 
  2. server{ 
  3. listen 192.168.0.1:80; 
  4. server_name PerformanceTest001; 
  5. … 
  6. server{ 
  7. listen 192.168.0.1:80; 
  8. server_name PerformanceTest002; 
  9. …. 

二、 測(cè)試數(shù)據(jù)

對(duì)于3類配置, 再加入3組變量:

1. 不配置server_name

2. server_name全配置一樣

3. server_name全配置不一樣

看server_name對(duì)于初始化速度的影響

9種組合的性能如下:

nginx 啟動(dòng)時(shí)間:time ./nginx -c /root/nginx.conf.sameport.noloc

nginx reload時(shí)間:time ./nginx -c /root/nginx.conf.sameport.noloc –s reload

從測(cè)試數(shù)據(jù)可以看出, 對(duì)nginx啟動(dòng)速度影響的因素為server{}中l(wèi)isten的port, server_name指令基本無(wú)影響。

三、 原因分析

3.1 http{}初始化流程簡(jiǎn)單介紹:

解析配置文件是遞歸地調(diào)用ngx_conf_parse函數(shù)完成的, http{}配置塊的解析流程:

1. 解析到http指令, 執(zhí)行ngx_http_block函數(shù), 創(chuàng)建http module的配置上下文后, 繼續(xù)ngx_conf_parse解析http{}內(nèi)部的內(nèi)容;

2. 解析到server指令, 執(zhí)行ngx_http_core_server函數(shù), 創(chuàng)建該server{}的配置上下文后, 繼續(xù)ngx_conf_parse解析server{}內(nèi)部的內(nèi)容;

3. 解析到listen指令, 添加到cscf以及cmcf配置中, 如下圖:

1. cmcf->servers數(shù)組保存了所有監(jiān)聽(tīng)的server數(shù)據(jù)

2. cmcf->ports數(shù)組保存了所有port匯聚的ip的數(shù)據(jù). listen同一個(gè)ip:port, server_name不同的srv_conf會(huì)掛在ngx_http_conf_addr_t的servers數(shù)組下。

一個(gè)配置好的樣子可能是這樣:

3.2 耗時(shí)位置定位

代碼中加變量記錄函數(shù)耗時(shí)總時(shí)間, 得到啟動(dòng)時(shí)耗時(shí)在2個(gè)步驟:

1) 解析配置文件, 對(duì)應(yīng)ngx_conf_parse函數(shù)

2) 初始化socket, 對(duì)應(yīng)ngx_open_listening_sockets函數(shù)

3.3 ngx_conf_parse耗時(shí)分析

主要是ngx_http_block函數(shù)的耗時(shí), 分為以下2個(gè)部分:

很明顯, ngx_http_add_addresses函數(shù)的性能消耗在對(duì)相同port已存在ip的查找上面, 這里用的是線性的遍歷查找,

且需要進(jìn)行字符串比較ngx_memcmp被執(zhí)行了2w*2w共4億次:

  1. for (i = 0; i < port->addrs.nelts; i++) { 
  2. // 遍歷查找, 如果配置文件中,相同port的IP過(guò)多,字符串比較帶來(lái)較大性能問(wèn)題, 2w個(gè)listen,這一塊耗時(shí)需要8s左右 
  3. if (ngx_memcmp(p, addr[i].opt.u.sockaddr_data + off, len) != 0) { 
  4. continue; 
  5. /* the address is already in the address list */ 
  6. // 找到對(duì)應(yīng)的ip, 添加cscf到IP 
  7. if (ngx_http_add_server(cf, cscf, &addr[i]) != NGX_OK) { 
  8. return NGX_ERROR; 

3.4 ngx_open_listening_sockets耗時(shí)分析

函數(shù)中初始化所有l(wèi)istening的socket

  1. /* for each listening socket */ 
  2. ls = cycle->listening.elts; 
  3. for (i = 0; i < cycle->listening.nelts; i++) { 
  4. if (bind(s, ls[i].sockaddr, ls[i].socklen) == -1) { 
  5. … 
  6. … 
  7. if (listen(s, ls[i].backlog) == -1) { 

對(duì)于同1個(gè)IP,新建不同port的socket相比新建多個(gè)不同IP的socket更省時(shí)間。

責(zé)任編輯:黃丹 來(lái)源: 博客園
相關(guān)推薦

2010-03-24 19:21:55

Nginx服務(wù)器

2011-04-07 13:39:24

WebHTTP

2009-09-17 18:05:51

Nis服務(wù)器

2010-05-19 10:31:07

IIS服務(wù)器

2019-07-09 14:57:09

代理服務(wù)器NginxHTTPS

2010-02-06 10:24:52

CentOS Ngin

2010-01-04 16:54:00

Ubuntu DNS

2009-07-06 17:40:05

JSP HTTP服務(wù)器

2020-04-15 20:57:57

NginxWeb服務(wù)器

2021-07-28 23:32:09

Nginx服務(wù)器Https

2011-01-19 09:01:48

sendmail配置

2010-03-16 16:26:58

nginxWeb緩存服務(wù)器負(fù)載均衡服務(wù)器

2017-11-10 08:58:49

Web服務(wù)器應(yīng)用程序

2024-05-08 16:47:24

PostgreSQL數(shù)據(jù)庫(kù)

2009-09-17 18:06:44

Nis服務(wù)器

2021-11-24 08:00:00

服務(wù)器Web系統(tǒng)

2014-04-09 10:50:01

Squid架構(gòu)緩存服務(wù)器

2009-07-03 13:05:47

JSP HTTP服務(wù)器

2022-01-12 08:49:33

CaddyWeb服務(wù)器Go語(yǔ)言

2023-10-18 07:52:48

Nginx靜態(tài)資源服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 网黄在线 | 国产精品黄色 | 免费观看黄a一级视频 | 国产亚洲一区二区三区在线 | 男女激情网| 午夜精品一区二区三区在线观看 | 精品视频一区二区在线观看 | 亚洲国产成人精品久久久国产成人一区 | 在线中文字幕日韩 | 久久久久亚洲精品 | 国产精品一区二区免费看 | 午夜久久av | 欧美日韩在线一区二区三区 | 一区二区三区视频在线 | 国产一级片在线观看视频 | 羞羞的视频网站 | 6080亚洲精品一区二区 | 一级黄色毛片免费 | 999免费视频 | 免费网站国产 | 久热9| 黄视频免费观看 | 国产在线a | 精品欧美一区二区在线观看 | 九九伊人sl水蜜桃色推荐 | 91久久北条麻妃一区二区三区 | 国产高清无av久久 | 日韩一区二区在线观看视频 | 国产综合精品一区二区三区 | 精品综合久久 | 精品美女 | 免费在线观看一区二区 | 国产在线观看网站 | 日韩精品一二三 | 欧美视频1 | 欧美高清一区 | jizz中国日本 | 国产日韩电影 | 亚洲精品久久久久久国产精华液 | 亚洲欧美日韩精品久久亚洲区 | 国产区视频在线观看 |