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

简介:

一般来说,压力测试用的都是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


相关文章
|
14天前
|
Java
IDEA快捷测试方法可用性
IDEA快捷测试方法可用性
17 0
|
17天前
|
数据可视化 测试技术
深入理解软件测试中的风险评估方法
【4月更文挑战第19天】 在软件开发的生命周期中,风险评估是确保产品质量和项目成功的关键步骤。本文将探讨几种常用的软件测试风险评估方法,包括定性分析和定量分析,并讨论它们在不同类型的测试环境中的应用。通过案例研究和最佳实践,我们将展示如何有效识别、评估和管理测试过程中可能遇到的风险,以及如何制定相应的缓解策略,以优化资源分配和提高测试效率。
|
2月前
|
人工智能 测试技术 持续交付
现代软件测试方法探析及应用前景展望
随着信息技术的迅猛发展,软件在我们日常生活和工作中扮演着愈发重要的角色。而为了保证软件质量和稳定性,软件测试显得尤为重要。本文将探讨现代软件测试方法的演变和应用前景,并分析其在不断变化的技术环境下的发展趋势。
|
2月前
|
安全 测试技术
BOSHIDA DC电源模块的安全性能评估与测试方法
BOSHIDA DC电源模块的安全性能评估与测试方法
 BOSHIDA DC电源模块的安全性能评估与测试方法
|
2月前
|
安全
DC电源模块的安全性能评估与测试方法
DC电源模块的安全性能评估与测试方法 DC电源模块的安全性能评估与测试方法应包括以下几个方面: 1. 输入安全性测试:包括输入电压范围、输入电压稳定性、输入电流范围、输入电流保护等方面的测试。测试方法可以是逐步增加输入电压或输入电流,观察模块的工作状态和保护功能。
DC电源模块的安全性能评估与测试方法
|
2月前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
9 0
|
11天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
17 1
|
6天前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
|
12天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
13天前
|
XML 测试技术 数据库
深入理解自动化测试中的数据驱动方法
【4月更文挑战第23天】 在软件测试领域,为了提高测试效率和质量,自动化测试已成为不可或缺的实践。数据驱动测试(DDT)作为一种高效的自动化测试策略,它通过将测试逻辑与测试数据分离,允许测试人员以更灵活、可维护的方式设计用例。本文将探讨数据驱动方法的基本原理,实现方式以及在实际项目中的应用案例,旨在帮助读者深入理解并有效运用数据驱动方法来提升自动化测试的效率和质量。

热门文章

最新文章