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

Nginx啟動配置加載性能分析:作為http服務器

運維 系統運維
本文測試了在配置文件規模較大時, Nginx作為http服務器的啟動速度,并分析耗時原因。

本文測試了在配置文件規模較大時, Nginx作為http服務器的啟動速度,并分析耗時原因。

結論:

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

2. 對于Server_name的初始化相當快, 對初始化性能無影響

一、測試內容

腳本創建3類配置文件, 規則如下:

1. 共創建2萬條Server{}配置

2. server_name基本定長, PerformanceTestxxx

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

  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全不同, 配置文件實例:

  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全不同, 配置文件實例:

  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. …. 

二、 測試數據

對于3類配置, 再加入3組變量:

1. 不配置server_name

2. server_name全配置一樣

3. server_name全配置不一樣

看server_name對于初始化速度的影響

9種組合的性能如下:

nginx 啟動時間:time ./nginx -c /root/nginx.conf.sameport.noloc

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

從測試數據可以看出, 對nginx啟動速度影響的因素為server{}中listen的port, server_name指令基本無影響。

三、 原因分析

3.1 http{}初始化流程簡單介紹:

解析配置文件是遞歸地調用ngx_conf_parse函數完成的, http{}配置塊的解析流程:

1. 解析到http指令, 執行ngx_http_block函數, 創建http module的配置上下文后, 繼續ngx_conf_parse解析http{}內部的內容;

2. 解析到server指令, 執行ngx_http_core_server函數, 創建該server{}的配置上下文后, 繼續ngx_conf_parse解析server{}內部的內容;

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

1. cmcf->servers數組保存了所有監聽的server數據

2. cmcf->ports數組保存了所有port匯聚的ip的數據. listen同一個ip:port, server_name不同的srv_conf會掛在ngx_http_conf_addr_t的servers數組下。

一個配置好的樣子可能是這樣:

3.2 耗時位置定位

代碼中加變量記錄函數耗時總時間, 得到啟動時耗時在2個步驟:

1) 解析配置文件, 對應ngx_conf_parse函數

2) 初始化socket, 對應ngx_open_listening_sockets函數

3.3 ngx_conf_parse耗時分析

主要是ngx_http_block函數的耗時, 分為以下2個部分:

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

且需要進行字符串比較ngx_memcmp被執行了2w*2w共4億次:

  1. for (i = 0; i < port->addrs.nelts; i++) { 
  2. // 遍歷查找, 如果配置文件中,相同port的IP過多,字符串比較帶來較大性能問題, 2w個listen,這一塊耗時需要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. // 找到對應的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耗時分析

函數中初始化所有listening的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) { 

對于同1個IP,新建不同port的socket相比新建多個不同IP的socket更省時間。

責任編輯:黃丹 來源: 博客園
相關推薦

2010-03-24 19:21:55

Nginx服務器

2011-04-07 13:39:24

WebHTTP

2009-09-17 18:05:51

Nis服務器

2010-05-19 10:31:07

IIS服務器

2019-07-09 14:57:09

代理服務器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服務器

2020-04-15 20:57:57

NginxWeb服務器

2021-07-28 23:32:09

Nginx服務器Https

2011-01-19 09:01:48

sendmail配置

2017-11-10 08:58:49

Web服務器應用程序

2010-03-16 16:26:58

nginxWeb緩存服務器負載均衡服務器

2024-05-08 16:47:24

PostgreSQL數據庫

2009-09-17 18:06:44

Nis服務器

2021-11-24 08:00:00

服務器Web系統

2014-04-09 10:50:01

Squid架構緩存服務器

2009-07-03 13:05:47

JSP HTTP服務器

2022-01-12 08:49:33

CaddyWeb服務器Go語言

2023-10-18 07:52:48

Nginx靜態資源服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩国产在线观看 | 色播av | 亚洲成人网在线观看 | 一级黄色片在线看 | 免费小视频在线观看 | 亚洲午夜精品视频 | 亚洲毛片| 蜜桃臀av一区二区三区 | 精品福利在线视频 | 人干人人 | 成年人在线观看视频 | 亚洲一区二区视频在线观看 | 91精品国产综合久久国产大片 | 国产精品视频久久久久久 | 国产一二三视频在线观看 | 国内精品视频在线观看 | 国产亚洲精品a | 中文字幕一区二区三区精彩视频 | 中文字幕一区二区三区在线观看 | 亚洲成人免费 | 久久国产一区二区三区 | 日本黄色不卡视频 | 国产精品99久| 久久丁香| 久久99精品久久久久久青青日本 | 国产成人免费在线 | 国产成人91视频 | 精品久久久久久亚洲精品 | 91精品亚洲 | 亚洲国产免费 | 国产精品高潮呻吟久久av野狼 | 欧美www在线 | 天堂一区二区三区 | 2018中文字幕第一页 | av男人的天堂在线 | 亚洲自拍偷拍视频 | 国产精品欧美一区二区 | 免费观看一级特黄欧美大片 | 91欧美精品成人综合在线观看 | 久久手机在线视频 | 欧美久久一区二区三区 |