单核 -512M内存-2000并发正常使用
自从自己创业以后就很少写博客了,也许是太忙了。也许是无法静下心好好研究一个东西。今天把我们做的后台做了下压力测试。结果还可以,尤其是对于我这种从java转过来土人。
4年前看到一篇抨击java的文章 《名词王国之死》,当时很不屑,现在看来在很多场景,尤其是能真正给用户节省资源的地方,java真的差了不少。之前使用tomcat,一台4g内存的服务器,死活上不了1000并发,tomcat这东西的对硬件的利用率太低了。我们来看看ngx+nodejs
测试环境
机器型号:vmware 虚拟机,分配最大内存1G,分配cpu核数1核,单线程。(原始机器为办公电脑:i5-4690,4g内存,500G硬盘)
系统控制: pm2 设置: 内存< 256M ,production 模式。
测试工具: jmeter - 2.1.3
系统软件: nginx , yliyun-server, mysql , reids
压测接口: 文件列表[100个文件] ,用户列表[100用户],小文件上传(<500K)
测试步骤
循环次数:(10次)
线程数依次: 100, 500 ,1000, 1500, 2000, 2500, 3000,
测试结果展示【仅展示文件列表接口】
- 100 线程(类似100并发)
线程数设置为100,启动时间为3秒,单个线程循环10次,出错继续(后续都是如此配置)
我们可以看到100并发,当然是毫无压力,继续。
- 500线程
ok, error%
这一栏为0,用户列表是另外一个请求,这里也跟着跑了10次,无视即可。
- 1000线程,过个小关
我们看到 error
一栏表明是1000是毫无压力的。这里将接口返回的数据量增加到了1215.3KB,列表中显示的数据为30列,算是更加符合我们正常习惯性使用。
还可以看到应用所占的内存从开始的(500线程)的189M上升到197M,有小幅度增加。平均数据返回为4s,这是能接受的极限了。
因此可以得出结论,这种配置(单核,512M内存)的机器,并发在1000左右是比较理想的。
但是我们压力测试不是正常使用,必须继续,压到出错,或者拥有崩溃为止。
- 1500线程
看看error
,无错通过。 看是平均延迟到了7.2s,内存使用上升到227M,这里我在pm2 脚本设置了最大内存为256M,"max_memory_restart": "256M",
,为了更要的压内存,实际情况中不推荐设置。
使用 top
指令 看到 最耗内存的就是应用和msyql 数据库了,我们没有数据库列表缓存起来,缓存起来测试就显得没有意义了,但是实际使用中是需要开启缓存的。
2000线程
这里我把线程创建时间修改为5s,免得自己的机器被卡死。没有错误
,内存快满了,平均延迟到达10s,对于用户使用来说是要被吐槽的,没关系,傻瓜才这么用。
看看偏离,2888,看上去还不错。
到此目的已经达到,经过我们改造后的一粒云的后台(v1.1)处理能力相当优秀,当然这受益于nginx 与nodejs的异步机制。如果你有这方面的难题可以和我们交流。
我们的产品官网是 www.yliyun.com,欢迎大家试用,提供邀请码:[wymf008]。产品是免费的。客服妹子西瓜qq:2941390949。
- 2500线程 我们还应该继续
出错了,5个请求出错,日志显示都是超时,我们可以看到max
这一栏超过60s了,ngx配置keeplive 时间为60s。内存也接近250m。
- 再试试3000线程
感觉上一把的0.02%的错误还有点小,再压压。
结果差不多,都是超时导致。如果还要提升的并发的话必须要加大内存才行了。
cpu 也一样,我一路监控下来都是在82%-95%,但是nodejs 必须再多开一个进程。
好了,技术是没有优劣没有尽头的,合适自己的才是最好。
单核 -512M内存-2000并发正常使用的更多相关文章
- Tomcat从内存、并发、缓存方面优化方法
Tomcat有很多方面,从内存.并发.缓存四个方面介绍优化方法. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 cata ...
- 如何优化tomcat配置(从内存、并发、缓存4个方面)优化
Tomcat有很多方面,我从内存.并发.缓存四个方面介绍优化方法. ** 一.Tomcat内存优化 ** Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚 ...
- 512M内存机器如何用好Mysql
购买阿里云512M内存ECS后,mysql有时候会自动关闭,停止运行 解决办法: a,优化mysql配置,因为自己安装的是mysql 5.6,而从5.6开始,mysql安装包中不再包含my-small ...
- Centos6_32位系统512M内存_如何安装gogs_Mysql_配置开机自启动
因为有很多人的Linux版本比较低,内存配置也较低,X86 ,32位系统的:所以这里推荐采用二进制安装gogs,并且使用Mysql:这个是傻瓜式的安装方案,适合绝大多数人(提及了centos7的安装思 ...
- 优化tomcat配置(从内存、并发、缓存3个方面)优化
Tomcat有很多方面,我从内存.并发.缓存三个方面介绍优化方法. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catal ...
- 三分钟掌握共享内存 & Actor并发模型
吃点好的,很有必要.今天介绍常见的两种并发模型: 共享内存&Actor 共享内存 面向对象编程中,万物都是对象,数据+行为=对象: 多核时代,可并行多个线程,但是受限于资源对象,线程之间存在对 ...
- 优化tomcat配置(从内存、并发、缓存4个方面)优化
Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_OPTS参数 ...
- 【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- 【Tomcat】Tomcat配置与优化(内存、并发、管理)【自己配置】
一.JVM内存配置优化 主要通过以下的几个jvm参数来设置堆内存的: -Xmx512m 最大总堆内存,一般设置为物理内存的1/4 -Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样 ...
随机推荐
- ASP.NET Core 中文文档 第三章 原理(17)为你的服务器选择合适版本的.NET框架
原文:Choosing the Right .NET For You on the Server 作者:Daniel Roth 翻译:王健 校对:谢炀(Kiler).何镇汐.许登洋(Seay).孟帅洋 ...
- 【转】async & await 的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...
- winform程序一启动抛出异常--调用目标发生异常
在本机测试没有问题,可一到别的电脑上就抛出异常,这是最麻烦的事,一时间还找不出什么原因,本机上还无法重现. 现在好了,终于找到一个完美解决的办法,在Program.cs类中加入如下代码 static ...
- svn+teamcity+YouTrack+Upsource搭建—写给明天工作室的小伙伴
首先解释下概念: SVN:Subversion的简称,版本控制系统.采用集中式管理(本地只保留服务器仓储的副本,想要把代码交到服务器或者看提交记录.差异对比就必须得有网络连接) Teamcity:可持 ...
- 【Java每日一题】20161227
package Dec2016; public class Ques1227 { public static void main(String[] args){ } { c = 1; } int c ...
- ActiveMQ(li)
一.ActiveMQ 首先,ActiveMQ不是一个框架,它不是struct,webx,netty这种框架,它更像是tomcat服务器,因为你使用它之前必须启动它,activeMQ和JMS的关系有点类 ...
- 记录一次bug解决过程:else未补全导致数据泄露和代码优化
一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 7.外部接口的设计
目 录 第七章 外部接口的设计... 2 7.1 插件接口... 2 7.2 图形显示接口... 3 7.3 ...
- 利用mysql查询总数据条数,再php处理数据转出数组,生成随机返回到页面,可以做成刷新页面,出现不同的内容
create table hxfimported( pid int primary key auto_increment, pic ), pname ), price ,) ); insert int ...
- CSS选择器的权重与优先规则?
我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...