8.OpenResty系列之2W并发实践

本文的目标是,成功压测OpenResty接口达到10W并发.高并发其实就是能够扛助某一时刻流量,往往就呢几秒中,真正秒杀下单支付的流量是很小一部分.

1. 配置最大可打开文件数
# 临时生效
ulimit -n 65535
# 永久生效修改该文件vim /etc/security/limits.conf,新增以下两行
* soft nofile 65535
* hard nofile 65535
(base) [root@shenjian1 conf]# ulimit -n
65535
2. AB压测
2.1 首页静态页面化

目前首页改为Hello World, 对于秒杀的商品一般为静态页面显示,即尽可能减少与服务器的交互.

对于AB压测工具来说,最高压侧2W并发,20001都不支持.

8.OpenResty系列之2W并发实践_第1张图片

2.2 压测apr_socket_recv: Connection timed out (110)错误解决

上图可见,出现了110错误, 我们调整内核参数

(base) [root@shenjian1 conf]# vim /etc/sysctl.conf 
# 例如web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
net.core.somaxconn = 100000
# 表示用于向外连接的端口范围。缺省情况下很小,改为1024到65535
net.ipv4.ip_local_port_range = 1024 65535
# 立即生效
(base) [root@shenjian1 conf]# sysctl -p

如下图所示, 请求10W次,并发用户2W,可以正常压测完毕,可以看到响应均值与中位值约200ms, 最大值约1S

8.OpenResty系列之2W并发实践_第2张图片

当请求数达到30W,会出现104错误,下次在尝试分析解决吧~~

(base) [root@shenjian1 conf]# ab -n 300000 -c 20000 127.0.0.1:81/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
apr_socket_recv: Connection reset by peer (104)

你可能感兴趣的:(高并发,openresty)