nginx 服务器并发优化

apache 提供的 ab 可以对服务器进行压力测试,

安装 ab:   apt-get install apache2-utils

安装完后,ab 在目录  /usr/bin/ 下的。

执行: ab -c 并发数 -n 请求数 请求的URL    如:

ab -c 2000 -n 50000 http://192.168.137.47/    表示对 http://192.168.137.47/ 进行50000次请求,并发数为 2000

我运行的机器不是在 192.168.137.47 上,运行时报了一个错误:  socket: Too many open files

运行:  ulimit -n  出现结果 1024,说明最大允许打开的文件描述符的数量为 1024,我们上面并发数为 2000,比1024大,运行下面的命令,设置一个较大的值:

ulimit -n 20000

先运行小一点的压力测试参数,看看正确返回时, ab 给出的测试报告。如: ab -c 200 -n 5000 http://192.168.137.47/

Server Software:        Tengine/2.2.2   # 我用的是 Tengine (https://tengine.taobao.org/ 淘宝对 nginx 的扩展)
Server Hostname:        192.168.137.47
Server Port:            80

Document Path:          /
Document Length:        179 bytes

Concurrency Level:      200         # 命令中 -c 的值
Time taken for tests:   16.161 seconds    # 总共花费的时间
Complete requests:      5000      # 命令中 -n 的值
Failed requests:        0   #失败的请求数
Total transferred:      2110000 bytes    # 总共传输的数据量
HTML transferred:       895000 bytes   # 总共的 HTML 内容的传输量
Requests per second:    309.38 [#/sec] (mean)  # 吞吐率(平均值)
Time per request:       646.447 [ms] (mean)   # 平均一次请求所花费的时间,即用户的等待时间
Time per request:       3.232 [ms] (mean, across all concurrent requests)   # 服务器平均一次请求处理时间,吞吐率的倒数
Transfer rate:          127.50 [Kbytes/sec] received   # 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)
                      min  mean[+/-sd]  median   max
Connect:        0     20 111.8       1            1002
Processing:    4    595 596.6     455         3669
Waiting:         1     593 595.9     452         3608
Total:            4     616 604.5      483         3670

Percentage of the requests served within a certain time (ms)
  50%    483    # 50% 的用户等待时间不超过 483 ms
  66%    778    # 66% 的用户等待时间不超过 778 ms
  75%   1021
  80%   1119
  90%   1484
  95%   1804
  98%   2137
  99%   2337
 100%   3670 (longest request)

当加大参数时,如  ab -c 2000 -n 50000 http://192.168.137.47/

这时出现了:   apr_socket_recv: Connection reset by peer (104)   这个错误,网上有人说是 ab 安装的问题,其实是服务器配置的问题,在高并发的情况下,服务器撑不住了。因为我用的是虚拟机,一台真实电脑上,开了4台虚拟机(两台 tomcat 运行 web 服务,一台 nginx 服务器作负载均衡,一台运行压力测试的命令)。需要对 nginx 服务器进行优化:

高并发优化思路:

1.  增大 nginx 配置文件中的 worker_connections 数量

2. echo 50000 > /proc/sys/net/core/somaxconn  # 最大连接数

3. echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle  # 加快 tcp 连接的回收

4. echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse   # 空的 tcp 允许回收

5. echo 0 > /proc/sys/net/ipv4/tcp_syncookies  # 不做洪水抵御

6. 增大 nginx 配置文件中的 worker_rlimit_nofile 的值,比如: 10000

7. ulimit -n 20000

再次运行   ab -c 2000 -n 50000 http://192.168.137.47/, 发现能正常返回报告了,因为是单台机器上装的虚拟机,当并发达到一定数量时,不管怎么调,最后总会出错。

原文地址:https://www.cnblogs.com/langfanyun/p/8541915.html

时间: 2024-10-11 15:49:23

nginx 服务器并发优化的相关文章

nginx高并发优化

nginx 高并发优化 一.关闭系统中不需要的服务 二.优化磁盘写操作 mount -o remount defaults,noatime,nodiratime partion mount_partion fstab 将partion mount_partion defaults 0 0 修改为partion mount_partion defaults,noatime,nodiratime 0 0 即修改为写入磁盘不修改访问时间 三.优化资源限制 ulimit -n 和ulimit -u 即o

修改Linux内核参数提高Nginx服务器并发性能

当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TIME_WAIT套接字数量,进而提高Nginx服务器并发性能.   vi /etc/sysctl.conf   增加以下几行: net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_syncookie

nginx服务器及优化

nginx服务器作用:是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器. Nginx配置文件及目录:/usr/local/nginx 安装目录-conf/nginx.conf 主配置文件-html 网页目录-logs 日志文件-sbin/nginx 启动脚本 /usr/local/nginx/sbin/nginx –v 查看Nginx版本 /usr/local/nginx/sbin/nginx –V 查看编译参数 /usr/local/nginx/sbi

Nginx大并发优化实战

文章知识点: [ ] 调优的必要性 [ ] 调优的维度和见解分歧 [ ] Nginx调优项 一.调优的必要性 ? 一直不愿意写优化的内容出来分享,实在是不知道该如何取写.因为,写不好就会被各种慰问,今天终于还是写了,因为有太多人私信或在群里问我或者让给分享经验,我还是从了. ? 在聊调优之前,我们先要知道为何调优,业务运行和调优的关系. 业务运行:线上业务正常运行,承载了公司业务. 监控业务:通过监控业务对线上业务进行监控,及时发现问题. 优化业务:通过监控分析,发现业务问题或者瓶颈,及时对业务

Nginx服务器性能优化配置

在大多数情况下,一个常规安装的nginx服务器对你的网站来已经是能很好地工作的了.然而,如果你真的想挤压出nginx的性能,你必须更深入 一些.在这时我们将解释Nginx的那些设置可以微调,以优化在处理大量客户端请求时的性能.需要注意一点的是这不是一个全面的微调指南,而是一个简单的 可以通过微调来提高性能设置的概述.请根据实际情况使用. 基本的 (优化过的)配置 我们这里要修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.通常情况下你能够在服务器的/etc/nginx目

web服务器并发优化(nginx+多实例tomcat负载均衡并发5000左右)

前言:   我之前在服务器方面不太懂,经过此次的配置让我的技术有了很大的进步,写此给大家共享一下,如有错误之处欢迎指正.   配置这个初衷是为了给java(s2sh框架)写的app接口提供大的并发量支持 ,并且是https的接口 (淘宝买的 http://item.taobao.com/item.htm?spm=a1z09.2.9.69.zvqUo9&id=39486787932&_u=21mb264ebe80   卖家人不错,我说配tomcat  给的jsk文件,几天后我配nginx给了

Linux下Apache服务器并发优化

 Linux/UnixLinux系统下Apache 并发数的优化 Apache Http服务器采用prefork或者是worker两种并发控制模式. preforkMPM 使用多个子进程,每个子进程只有一个线程.每个进程在某个确定的时间只能维持一个连接.在大多数平台 上,PreforkMPM在效率上要比Worker MPM要高,但是内存使用大得多.prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并 且对于那些线程调试困难的平台而言,它

Nginx 之并发优化

客户端/服务端 连接数 ulimit -n 100000 nginx 链接数 10240 个 worker_connections 10240;允许打开文件数worker_processes 1;worker_rlimit_nofile 10000; 系统的最大链接数:#more /proc/sys/net/core/somaxconn 太小 # echo 50000 > /proc/sys/net/core/somaxconn soket 快速回收 cat /proc/sys/net/ipv4

nginx 高并发参数配置及linux内核参数优化

一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8). 2.  worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到