免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4893 | 回复: 10
打印 上一主题 下一主题

[Web] 【压力 并发】还请大神给分析分析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-28 11:20 |只看该作者 |倒序浏览
本帖最后由 calmdown729 于 2014-03-28 14:05 编辑

小弟用两台 32G的戴尔服务器各自放了 两个jmeter工具
一台16G的惠普服务器放着一个应用(tomcat承载的,已调优),要通过访问这个应用的接口,测试并发数。
这个应用会降第一次查询的数据存入缓存,所以查询脚本不变的话,性能应该很高。

现在的情况是,一台jmeter我发10000的并发都没有报错(jmeter没有错,tomcat那边也没有错);
但是两台jmeter,用相同的脚本,我手动控制一起发并发(还好俺的手速够快。。。 因为之前用分布式jmeter测感觉不准 虽然坐过时间同步),这时候每台5000会有错误,有readtimeout ,connection reset ,还有提示打开文件数过多。

已经晕了,求分析

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-03-28 13:07 |只看该作者
还有提示打开文件数过多


先解决这个问题.

论坛徽章:
0
3 [报告]
发表于 2014-03-28 13:13 |只看该作者
回复 2# q1208c


   这个问题该怎么定位呢?

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
4 [报告]
发表于 2014-03-28 13:15 |只看该作者
回复 3# calmdown729


  

这还用定位?
"too many open files", 很明显是打开文件数超过了限制.

ulimit -a 就可以查看到当前的值.
ulimit -n 可以设置这个新的值.

  

论坛徽章:
0
5 [报告]
发表于 2014-03-28 14:03 |只看该作者
回复 4# q1208c


感谢,那能帮小弟分析下单台10000并发,和两台共10000并发这个问题么

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
6 [报告]
发表于 2014-03-28 14:11 |只看该作者
回复 5# calmdown729


光看你前面说的. 我也说不清楚为啥.

不过, 我建议你先把并发数降下来. 然后慢慢升高并发数, 直到出问题为止. 或许能发现点线索.     

论坛徽章:
0
7 [报告]
发表于 2014-03-28 14:18 |只看该作者
回复 6# q1208c

哥们儿,真是多谢你帮我分析了。可我目前的问题是,单台jmeter跑并发,从1000,2000,3000,到10000,都没有error,这期间,观察吞吐量,在2000并发的时候最大,往后吞吐量稍低,但没有降多少。

而我个人觉得有两点怀疑:
1、jmeter能不能有效1w并发
2、tomcat的处理能力即使我调优,即使这些接口都只是读取缓存,能不能真实处理这1w并发

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
8 [报告]
发表于 2014-03-28 14:29 |只看该作者
回复 7# calmdown729


这两样东西, 我都只能算是用过, 不能算是精通.

我不是太清楚你这个"并发"的概念具体是指的什么, 我个人对"并发"的理解, 是指的同一时刻.而且, 我指的是请求数, 不是用户数.

所以, 以我的理解, 单台 tomcat 不可能 支持 超过 10000个并发.

不过, 很多人偷换了"并发"的概念, 变成了同时响应的用户数, 这个时候, 在同一时刻的并发, 远没有那么高. 用户的请求是被排队了. 所以, 同一时刻, 服务器处理的请求数远小于并发数. 假如 tomcat 可以精确到 ms 来计算的话, 那么, 如果1ms 可以处理1个请求, 那1s也处理了 1000个请求了. 或者这样说, 10ms处理了两个请求, 那 1s也能处理 200个请求了. 而用户如果可以等待3s, 那已经有600个并发了.

所以, 如果 你所说的并发是后者的话, 10000 应该是可以支持的.

我没有看到你的数据, 从你说的现象上看, 很象是cache的原因导致的并发数下降. 当你用单一机器发送请求时, 数据很有可能都是在cache中了. 但当你用两台机器发送请求的时候, 由于内存分配(猜的)等原因, 可能有些数据无法被cache, 所以, 导致响应变慢, 这个, 会有恶性循环, 越来越差的情况出现.

如果条件可以, 你可以试试用 4个 jameter 来压一下, 看看会不会继续下降. 如果会, 那要看一下 tomcat 关于 cache的处理的相关地方了.

论坛徽章:
0
9 [报告]
发表于 2014-03-28 14:50 |只看该作者
回复 8# q1208c


    大哥,你分析太有道理了,我今天中午也在想是不是tomcat的等待队列设置太多,超时设置的很大,导致排队的很多,造成一种高并发的假象。
还有一点,jmeter是不是能够真的1s并发1w个请求也值得推敲,jmeter实际上应该也是有一个最大并发的,即使我设置1s的 rampup的时间,它做不到的话,会不会实际上是以10s rampup来并发,而实际瞬间的并发只有1000? 但他娘的jmeter这逼玩意儿也不太不智能了,日志贼简陋。。。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
10 [报告]
发表于 2014-03-28 15:14 |只看该作者
回复 9# calmdown729

我试过, 单个线程, jmeter 可以在 1ms 左右发出一个请求. 当然, 我测的就是个 静态的html, 服务器端日志显示, 差不多 1ms 收到一个请求. 当然, 这是做了限制. 有个 1ms 的延时.

我想如果你用10个以上的线程, 是有可能产生 10000个并发的. 不过, 这个并发也并不是我说的并发, 只能算作 每秒请求数 罢了. 所以, 我觉得我们是不是应该放弃并发这个词, 改用 QPS 更合适些.
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP