================= 遇到问题 =================
$ 直连压测

wrk -c10000 -t100 -d100m http://localhost:9981/order/list

$ nginx代理压测

wrk -c10000 -t100 -d100m http://localhost:8864/order/list

压测外的请求无法响应

================= 搜素方案 =================
$ 修改linux参数配置(最大打开文件数与进程最多打开文件数)以支持大量连接
$ nginx压测时会产生大量time_wait,与后端通信时开启keep alive以缓解time_wait情况

================= 用到的工具 =================
// 查看linux tcp连接情况

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}';

// 更快查看linux tcp连接情况的方式

ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}';

// 每秒输出一次当前系统连接状态

ss.sh
#!/bin/bash
while :
do
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
sleep 1s;
done

================= 最终解决 =================
$ 修改linux参数配置

modprobe ip_conntrack

vi /etc/sysctl.conf
fs.file-max = 1024000
net.netfilter.nf_conntrack_max = 1024000
net.nf_conntrack_max = 1024000
/sbin/sysctl -p vi /etc/security/limits.conf
* hard nofile 1024000
* soft nofile 1024000 try
net.netfilter.nf_conntrack_max = 1024000
net.nf_conntrack_max = 1024000
instead
net.ipv4.ip_conntrack_max = 1024000
net.ipv4.netfilter.ip_conntrack_max = 1024000

$ 修改nginx配置

/etc/nginx/nginx.conf
user nginx;
worker_processes 4; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 10240;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;
} /etc/nginx/conf.d/default.conf
upstream http_backend {
server 127.0.0.1:9981;
keepalive 512;
} server {
listen 8864;
server_name localhost; location /nginx {
default_type application/json;
return 200 '{"success": true}';
} location / {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
} nginx -s reload

$ 再次压测,直连和nginx代理都能正常响应(虽然很慢...应该与硬件条件有关)

参考文章:

构建C1000K的服务器(1) – 基础

构建C1000K的服务器(2) – 实现百万连接的comet服务器

sysctl: cannot stat /proc/sys/net/ipv4/netfilter/ip_conntrack_max: No such file or directory

wrk 压测中请求无法响应问题解决过程的更多相关文章

  1. 性能压测中的SLA,你知道吗?

    本文是<Performance Test Together>(简称PTT)系列专题分享的第6期,该专题将从性能压测的设计.实现.执行.监控.问题定位和分析.应用场景等多个纬度对性能压测的全 ...

  2. 性能测试:压测中TPS上不去的几种原因分析(就是思路要说清楚)

    转https://www.cnblogs.com/imyalost/p/8309468.html 先来解释下什么叫TPS: TPS(Transaction Per Second):每秒事务数,指服务器 ...

  3. JMeter压测Rest请求

    下载及安装 官网下载JMeter3.0: 找到bin目录下的jmeter.bat启动: 压测Rest请求 1.添加线程组 路径:右键“测试计划”->添加“Threads(Users)”-> ...

  4. wrk压测工具使用

    介绍分为四部分 1.wrk简述 2.wrk安装 3.wrk运行参数 4.wrk高级用法 1.wrk简述 当使用ab做压测的时候发现,ab的客户端消耗很大,而且测试时性能较差,测试redis,sprin ...

  5. https大势已来?看腾讯专家如何在高并发压测中支持https

    WeTest 导读 用epoll编写一个高并发网络程序是很常见的任务,但在epoll中加入ssl层的支持则是一个不常见的场景.腾讯WeTest服务器压力测产品,在用户反馈中收到了不少支持https协议 ...

  6. 压测中的QPS与TPS区别

    原文来自:https://www.cnblogs.com/fkkk/p/11957566.html QPS(每秒查询率)=并发数/平均响应时间 TPS(每秒处理事务数)=请求数/时间(秒) TPS的过 ...

  7. Node+Express中请求和响应对象

    在用 Express 构建 Web 服务器时,大部分工作都是从请求对象开始,到响应对象终止. url的组成: 协议协议确定如何传输请求.我们主要是处理 http 和 https.其他常见的协议还有 f ...

  8. 一次压测中tomcat生成session释放不及时导致的频繁fullgc性能优化案例

    性能问题:老年代一直处于占满状态,为什么没有发生内存溢出 以HotSpot VM的分代式GC为例,普通对象分配都是在young gen进行的,具体是从在位于young gen中的eden space中 ...

  9. django从请求到响应的过程深入讲解

    django启动 我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行'runserver'的操作,而ruserver是使用django自带的的we ...

随机推荐

  1. PHP(层叠样式表,写法分类),选择器的种类)

    表单元素的取值怎么取  对应的属性值都有哪些? <span> 标签被用来组合文档中的行内元素. 注释:span 没有固定的格式表现.当对它应用样式时,它才会产生视觉上的变化. style ...

  2. 转CB大佬的几个有用的MySQL知识

    1.find_in_set函数 find_in_set(str,strlist); str是一个字符串 strlist是字符串列表--一个有多个子链被“,”分开的字符串 有多种情况: a.str为nu ...

  3. tomcat8.5.11安装教程

    备份,省得以后自己又忘了. 1.下载tomcat 2.环境变量设置 打开环境变量设置 注意,要点击下面红框处的新建按钮,而不要点击上面的.新建系统变量: 注意,变量名一定得设置为CATALINA_HO ...

  4. toolbar按钮添加图标

    需要toolbar关联imagelist组件,imagelist组件添加需要的图片,在toolbar新建按钮,按钮中选择相应图表.

  5. TZOJ:3660: 家庭关系

    描述 给定若干家庭成员之间的关系,判断2个人是否属于同一家庭,即2个人之间均可以通过这些关系直接或者间接联系. 输入 输入数据有多组,每组数据的第一行为一个正整数n(1<=n<=100), ...

  6. nlp底层技术列举

    其实目前除了之前博客写到的一些关于自然语言处理用到的知识点之外,很多其他nlp技术只是会用但是不了解原理,先整体分个类,之后再仔细分析吧. 上图是https://www.sohu.com/a/1386 ...

  7. linux下查看php-fpm是否开启以及如何开启

    对于linux接触很少,对于命令很不熟,今天发现之前部署的站点无法访问了,就想可能是nginx或者php-fpm没有开启. 所以这里记录linux下查看php-fpm是否开启以及如何开启(nginx也 ...

  8. 3、LwIP协议栈规范翻译——概述

    3.概述 像许多其他TCP/IP实现一样,分层协议设计已经成为设计lwIP实现的指南.每个协议实现为自己的模块,其中几个功能充当每个协议的入口点.尽管协议层是单独实现的,一些层却不全是,正如前面所叙述 ...

  9. unity 安装破解提示partern not found和tutorials学习

    1.破解安装问题:unity 安装破解提示partern not found 可能和安装了多个版本有关,删除了c下的unity目录也没有解决,试着重新安装也不能破解, 破解的软件的方式是生成lisen ...

  10. ndarray的用法总结

    #发现ndarray的一维,二维都可以用[i][j], 它们都是下标索引的连用, 比如j表示第j个元素;#二维ndarray可以用[m, n]来进行行列的操作,类似matlab中的用法.取某一列是[: ...