压力测试与提升服务器能力的几个方法

简介:

一般来说,压力测试用的都是apache软件自带的ab命令,这个命令可以自己手动规定模拟多少个人同时访问目标网址同时这些人访问多少次。ab的格式如下:

#ab -c 1000 -n 50000 http://192.168.1.202/index.html

这句话的意思是模拟3000个用户同时访问192.168.1.202的主页,访问50000次。注意url一定要写全,不可以就写一个192.168.1.202。


但是ab有一点缺憾,那就是只能访问静态网页,如果是动态网页比如是聊天室那种网页就访问不了,这种情况需要搭配shell脚本来搞定。


 ab的结果如下:wKiom1c1-VfTKv0IAACq2Vun1e8254.png

wKioL1c1-irg85FYAAFqw-PfpQ0715.png

这份报告里面显示了 目标服务器软件是1.2.7的nginx,并发1000,请求了50000次,其中50000次请求有3700多个失败了(不算优秀)。总共花了13秒多,一共交换了多少个字节,其中80%的请求反应只花费了100ms,18%的请求响应花费了1秒以上,剩余2%的响应用了3秒。


当我们需要提升并发值的时候,可能服务器在默认的配置下就会显示大量的连接错误。这些主要是因为四点,1)socket需要高的内存,服务器本身硬件能力是否够用;2)能否一口气建立多个socket;3)建立了多个socket之后能否同时打开多个文件,同时文件能按socket返回,4)网卡给力,是万兆以太网卡。


提升高并发性能以及优化nginx的招数如下:

1)#ulimit -n 20000:默认值是1024,这个值代表一个进程最多能开启几个文件;

2)/proc/sys/net/ipv4/tcp_tw_recycle 这个文件默认为0,改成1的话表示系统会快速回收tcp连接;

3)/proc/sys/net/ipv4/tcp_tw_reuse 这个文件默认为0,改成1的话表示系统快速利用tcp;

4)/proc/sys/net/ipv4/tcp_syncookies 这个文件默认是1,改成0的话表示系统不会进行“洪水防御”;

5)nginx.conf里的keep_timeout=0,即请求结果之后不保留tcp链接,因为在高并发之下,keepalive会占用大量的socket链接时间,当这个值改成0之后,通过/status看,waiting值会大幅度减少,http的响应头里没有keep_alive而是connection:close;(keep_alive这个是在http的响应头看到的,这个东西指的是用户在访问forum.php的时候就会保持连接,然后只要是在规定时间内再访问css,js等东西的时候,就可以继续使用这个链接,这个对于大用户的网站来说,弊端是有的,让人赶快把坑让出来。)

6)nginx.conf里的 event{}中的work_connections,默认是1024,可以臭不要脸的改成10240;

7)/proc/sys/net/core/somaxcon,监听队列的长度,默认值是128,可以改成50000左右。

8)nginx.conf的全局设定里添加一句话:worker_rlimit_nofile 10000;,指的是一个工作进程可以打开10000个文件。


压力测试最好是多台机器一起ab,二三台就够了,而不是一台机器自己孤独的压,毕竟客户端也是有瓶颈的。客户端更改瓶颈的主要方式就是#ulimit -n和扩大somanconn的值。


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1773210


相关文章
|
13天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
30 4
|
28天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
68 9
|
1月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
2月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
56 1
|
2月前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
21天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
28 6
|
24天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
37 6
|
24天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
31 4
|
1月前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
118 2
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
140 2