https://blog.csdn.net/cnskylee/article/details/127645806

众所周知,Nginx一款体积小巧,但是性能强大的软负载,主要被用作后端服务和应用的反向代理和负载均衡。

Nginx的编译可以配置很多参数,但是默认情况下是不会开启线程池(社区版从1.7.11开始引入线程池)的。因此无论是master进程,还是worker进程的线程数都是1,如下所示:

# ps -ef| grep nginx
root 8304 8232 0 09:33 pts/1 00:00:00 grep --color=auto nginx
root 16365 21060 1 Oct28 ? 02:04:32 nginx: worker process
root 16366 21060 2 Oct28 ? 02:48:07 nginx: worker process
root 16367 21060 2 Oct28 ? 02:21:11 nginx: worker process
root 16368 21060 3 Oct28 ? 03:55:30 nginx: worker process
root 21060 1 0 Jul31 ? 00:00:00 nginx: master process /data/nginx/sbin/nginx

# ps -efL| grep 21060| grep -v grep| wc -l
5
# ps -efL| grep 16365| grep -v grep| wc -l
1
# ps -efL| grep 16366| grep -v grep| wc -l
1
# ps -efL| grep 16367| grep -v grep| wc -l
1
# ps -efL| grep 16368| grep -v grep| wc -l
1

现在我们在编译的时候,增加--with-threads参数,然后在nginx.conf中配置aio threads后,再来看看master进程和worker进程的默认线程数,默认的线程池的线程数为32个。

# ./configure --prefix=/data/nginx --with-threads
# make
# make install
# ps -ef| grep nginx| grep -v grep
root 4155 1 0 09:10 ? 00:00:00 nginx: master process ../sbin/nginx
root 4156 4155 0 09:10 ? 00:00:00 nginx: worker process
root 4157 4155 0 09:10 ? 00:00:00 nginx: worker process
root 4158 4155 0 09:10 ? 00:00:00 nginx: worker process
root 4159 4155 0 09:10 ? 00:00:00 nginx: worker process

# ps -efL| grep 4156| grep -v grep| wc -l
33
# ps -efL| grep 4157| grep -v grep| wc -l
33
# ps -efL| grep 4158| grep -v grep| wc -l
33
# ps -efL| grep 4159| grep -v grep| wc -l
33
# ps -efL| grep 4155| grep -v grep| wc -l
133

现在,我们再来研究下自定义线程池(一个CPU内核最大不要超过50个线程,我的测试虚拟机是4核),尝试修改线程池的线程数为120(一个核配置30个线程)试试。

----nginx.conf配置片段
----它定义了一个名为default的线程池,其中包含 120 个工作线程和 1024 个任务的任务队列的最大长度。如果任务队列过载,NGINX 会拒绝请求并记录此错误

# in the 'main' context
thread_pool default threads=120 max_queue=1024;

# in the 'http', 'server', or 'location' context
aio threads=default;

# ps -ef| grep nginx| grep -v grep
root 4155 1 0 09:10 ? 00:00:00 nginx: master process ../sbin/nginx
root 8711 4155 2 09:47 ? 00:00:00 nginx: worker process
root 8712 4155 2 09:47 ? 00:00:00 nginx: worker process
root 8713 4155 2 09:47 ? 00:00:00 nginx: worker process
root 8714 4155 3 09:47 ? 00:00:00 nginx: worker process

# ps -efL| grep 4155| grep -v grep| wc -l
485
# ps -efL| grep 8711| grep -v grep| wc -l
121
# ps -efL| grep 8712| grep -v grep| wc -l
121
# ps -efL| grep 8713| grep -v grep| wc -l
121
# ps -efL| grep 8714| grep -v grep| wc -l
121

使用apache jmeter进行性能压测,线程组配置:

HTTP请求配置:

吞吐量压测数据(5次):

参考:

https://www.nginx.com/blog/thread-pools-boost-performance-9x/
————————————————
版权声明:本文为CSDN博主「cnskylee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cnskylee/article/details/127645806

【Nginx】优化,增加线程的更多相关文章

  1. 2.Nginx优化

    [教程主题]:Nginx优化 [课程录制]: 创E [主要内容] Nginx 优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine ...

  2. Nginx优化(十七)

    [教程主题]:Nginx优化 [课程录制]: 创E [主要内容] Nginx 优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是 ...

  3. nginx优化

    此文章非原创,出自鸟哥之手~ http://blog.chinaunix.net/uid-25266990-id-2985541.html 改排版改得多,当然红色部分要注意下,用得较多 ------- ...

  4. Nginx优化具体,应对高并发

     nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议依照cpu数目来指定.一般为它的倍数. worker_cpu_affinity 00000001 ...

  5. Nginx优化use参数epoll,kqueue,rtsig,eventport,poll

    转自:http://blog.sina.com.cn/s/blog_5eaf88f10100gkrq.html Nginx use参数分析对比 下图对比了poll select epoll和kqueu ...

  6. nginx优化php-fpm优化 压力测试达到每分150万访问量webbench网站压力

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装:引用wget http: ...

  7. NGINX: 优化 use 参数

    转自:http://blog.sina.com.cn/s/blog_5eaf88f10100gkrq.html Nginx use参数分析对比 下图对比了poll select epoll和kqueu ...

  8. nginx优化配置大全

    由于面试被问到nginx优化做过哪些 后来发现,其实做过的也不少,忘了的更不少,因此写个博客记录一下(里面有一些内容来源于其他作者). 配置文件样例为生产环境样例. 1.nginx基本优化 安装方式有 ...

  9. 高并发下的 Nginx 优化与负载均衡

    高并发下的 Nginx 优化   英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. ...

  10. 高并发下的Nginx优化

    高并发下的Nginx优化 2014-08-08 13:30 mood Nginx    过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apach ...

随机推荐

  1. 手把手教你玩转 Excel 数据透视表

    1.  什么是数据透视表 数据透视表是一种可以快速汇总.分析大量数据表格的交互式分析工具.使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以查看数据表格不同层面的汇总信息 ...

  2. Hadoop详解(04)-Hdfs

    Hadoop详解(04)-Hdfs HDFS概述 HDFS产出背景及定义 背景:随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需 ...

  3. JavaFx 页面和控件设置快捷键

    原文:JavaFx 页面和控件设置快捷键 - Stars-One的杂货小窝 之前说过一篇window系统全局快捷键的设置,本期主要是讲解JavaFx应用程序的快捷键设置,还是有所区别的 这里主要是To ...

  4. Java解题练习

    Java解题练习 1.A+B问题   解题代码: import java.util.*; public class Main { public static void main(String[] ar ...

  5. Android Volley 基本使用

    Android Volley 基本使用 本篇主要介绍 Google 给Android 平台提供的 Volley 一个 Http请求库 , 齐射! 1.概述 Volley是Google 提供的一个小巧的 ...

  6. ionic+vue+capacitor系列笔记--01项目初始化

    Ionic 是什么? Ionic 是一款接近原生的 Html5 移动 App 开发框架,只需要你会 HTML.CSS 和 JavaScript 就可以开发移动 App应用,使用最基础的 Web 技术创 ...

  7. 芯片下载相关-CH32系列芯片下载方式汇总及教程

    一.CH32Fx系列芯片下载 1.ISP下载: 2.SWD下载 3.脱机烧录器下载: 二.CH32Vx系列芯片下载 1.ISP下载: 2.SWD下载: 3.脱机烧录器下载: 4.CH32V003下载注 ...

  8. day04-视图和视图解析器

    视图和视图解析器 1.基本介绍 在SpringMVC中的目标方法,最终返回的都是一个视图(有各种视图) 注意,这里的视图是一个类对象,不是一个页面!! 返回的视图都会由一个视图解析器来处理(视图解析器 ...

  9. 【HMS Core】使用机器学习服务和搜索服务识别植物

    ​1.介绍 总览 机器学习服务(ML Kit)为开发者提供简单易用.服务多样.技术领先的机器学习能力,助力开发者更快更好地开发各类AI应用.同时,搜索服务(Search Kit)通过端侧SDK和云侧A ...

  10. JAVA虚拟机07-垃圾回收-分代收集理论和垃圾收集算法

    1.分代收集理论 1.1分代收集理论假说 1.2分代收集理论奠定的垃圾收集器原则 1.3基于分代收集理论的内存划分-跨代引用假说 2.垃圾回收 3.垃圾收集算法 3.1标记-清除算法 3.2标记-复制 ...