00:00
NX的动静分离配置,那这个配置好了以后呢,我们最起码我们后台的整个tomcat那只处理动态请求,那占用的资源呢就会很小了,那么来做一个压力测试,以前我们在压力测试的时候,我们都不敢把线程调到一两百,因为我们之前50的时候,我们来压测,有时获取全页的这个数据,那我们整个客户端都会卡死,都会崩溃,那现在呢,我直接来调成200,那可能呢,都可以来压了,因为这个200呢,我们同时请求过去,他们看看呢,这200只是来处理动态请求,那静态资源呢,全都交给N几了,假设每一个线程,每一个请求它会带十个静态请求,那如果我们200并发,那最终算上动态静态可能就有2000多个,那我这样一分离以后,我们Tom cat只处理200的动态,而一千八的静态呢,全由我们NT4来进行处理。虽然可能获取我们首页的全。
01:00
当内容数据还是一样多,返回时间呢,还差不多,但这样呢,一分工以后,每一个人在未来都可以来承担那么大的吞吐量。那么先来拿50压测一下,我们来看性能有没有什么良好的表现,那这个为了标准期间把我们以前的这一块我们也打开,我们在这儿呢,把缓存我们也打开,那我们以前压测呢,是缓存日志这都开了,那我们现在也开,再加上动静分离,我们看有没有整个首页全量数据,有没有我们整个效果好,那现在起来以后呢,我先来刷新一下,保证我们这个首页能访问,然后我们再来压测。来刷新。那么现在这个首页呢,就是可以访问的,那接下来我们来进行一个压力测试,这个压力测试呢,我们正好来监控一下我们的商品服务,来重新把商品服务连接上,特别是它的这个GC,因为我们GC调的很小,所以呢非常容易爆满,一爆满呢就会进行垃圾回收,好那现在来测试一下,来打开解密来进行压力测试,先拿50个线程,我们来压测我们的数据,HTP请求我们要首页的全量数据并行下载量六好,我们来给它限制好。
02:10
来,压力测试开始。好,现在呢,我们来看一下这个汇总报告,那这个压测呢,每秒能有十个,11个啊,现在13个,那我们之前呢每秒有七个,现在呢,我们这个最低也可能有八九个了,我们现在来看一下我们之前的这个报告,之前的这个测试报告全量数据是七个,那么现在呢,已经有11个多,但家感觉这样还很慢,而且呢,我们来看一下我们这一块呢,整个监控我们这一块呢,不断的进行GC,而且我们看老年代几乎已经要满了,而且我们每次小GC,老年代都会有一个大GC,我们发现现在所有的慢都慢在了我们这个老年代的这块GC,光GC这么300来次都花了30多秒了,所以说呢,我们现在来的主要的大优化已经不是在我们这个NGS动静分离等等这些纸上,因为将所有配置好了以后,我们现在已经能接受大量请求了,所以我现在呢把这个都停一下,我们呢现在停止来压测我。
03:13
现在呢,给他调整我们整个空间,我们之前在这儿来监控的时候,发现老年带非常容易爆满,而且呢,我们这个伊甸园区也经常爆满。导致我们这个一键园区呢,经常进行垃圾回收,所以呢,我们现在来给它运行把这一块配置改一下,我们把它这个最大内存呢,我们不调成100M了,我们来调成1024M,相当于呢,它整个最大占用1024,而且呢,我再来调一下XMS初始呢也写一个1024,那相当于它固定好了,这个就是1024,我再来写一个,这个叫XMNN呢就是新生代,那就是我们这个伊甸园区加我们这个幸存者区,我把这个呢调大,因为这个请求的临时对象非常多。
04:02
所以呢,我把它调个512,我们让它不进行频繁的垃圾回收,好我现在点一个应用点一个OK,以前五十一直往下运行,吞吐量都减到两三个了,因为这个垃圾回收太浪费时间了,而且能回收腾出空间还好,万一腾不出,那肯定就出现我们服务崩溃的这些现象。那好,那正好我们在测这个之前我来给大家演示一下服务崩溃,好,我们现在来整一个100M。怎么服务崩溃呢?行,我们这个在不启动期间,我现在压力测试,我们来把这一块好去掉,我们现在给它整上200个线程,我现在来启动压力测试。好,那现在200个线程,我们来看我们这一块,好,现在呢,运行起来感觉都还挺不错的,我们来看我们的整个吞吐量报告,结果数里边没数据,诶结果数一直没数据,我们来看一下我们这个后台,后台感觉能查出来,来看一下监控,监控呢,我们这个老年代已经几乎要满了,我们这个伊甸园区让他再来回收,来稍等一下,我们来看一下这一块,我们这个控制台呢,没现象,那我们在这儿汇总报告里边。
05:11
这一块呢,一直没返回,没返回呢,说明第一个请求都没处理完,这是我们这一块内存空间已经标满了,我们没法处理请求了,而且这个光GC都花了两分多钟了,如果我们一直等下去,这个老年代再买了,我们现在是66.682,好,我们来稍微等,我们等到他买了以后呢,那我们这一块全部打印的都是我们这个内存溢出的问题,好,我们把这一块先停掉,每秒2.3,我把这一块清空掉,我再来启动一次走。那现在200个线程来压,那么这一块的数据,好现在呢,每秒看起来有30多个,吞吐量挺大的,我们来看我们的这一块监控后台,那么这一块后台呢,我们这个内存还没有爆满,好我们等待持续运行了一段时间以后呢,现在内存已经699670了,我们看控制台,控制台呢,这已经开始有些线程抛出异常了,那如果呢,我们再持续再来等,那么整个呢,肯定控制台会抛出很多异常,包括内存溢出等等,好我们现在来看,我们现在控制台呢,已经内存溢出了,而且呢,我们这个Java的堆空间有问题,包括我来访问我的这个首页,我发现这个首页呢已经不能提供服务了,Unable to fund instance,也就说我们找不到这个实例了,这就是我们线上的服务崩溃的整个过程,我们持续在运行期间CPU内存爆满卡死,将用我们应用呢挤下线,那这个应用呢,不能提供正常服务,那这个应用呢,相当于已经停掉了,虽然我们在这一块还可以来监控运行,但它已经不能。
06:40
提供实际的服务了。那接下来我们要做的就是好,我们把这个压力呢测试停止,然后呢,我们接下来把它的整个内存调大,它的整个呢,可能会更快的处理好,那现在呢,把这一块整个内存调大,把这块都去掉,那还是调整成我们以前的这些参数好,我把这个复制过来,那以前呢是杠XMX是1024 XMX也是1024,我们给他新生代呢,调了512的这个内存空间,好,我们现在点个应用,点个OK来重新来启动它。
07:15
我们以前呢,这个已经移出了,那么这个写法呢,有问题不能写这个,等于号把这个重新来写一下。好,我们现在来重新启动走。以前呢,我们运行一段时间以后,整个溢出导致我们服务崩溃,我们这个服务呢,不能提供响应,那么现在呢,把整个内存空间调大,那这一块呢,就已经关掉了,我们重新给它连接进来。我们找到咱们这个商品服务。好,现在我们来看GCGC呢,我们这个伊甸园区现在呢,有384兆,还有我们这个幸存者区,64 64,我们这个老年代512,我们调的呢,都挺大的,那现在接下来我们来进行一个压力测试,那这个压力测试呢,以前我们是根本不敢写200这种线程数呢,都是一种奢望,我们现在来写上200来进行压力测试,好,我们现在来启动起来。
08:09
那压力测试开始我们来监控我们这一块,那这一块呢,我们发现这个伊甸园区容易买,买了以后呢,给老年代放一放,但这个老年代呢,GC的次数也很少,截止目前呢,GC的次数很少1.1,园区GC的次数很多,来看一下它的整个吞吐量,这个吞吐量呢,我们这个汇总报告是每秒13.5,那它持续运行呢,它肯定会继续往上升,我这个系统肯定也是卡死了,我们来稍等一会儿,那么这一块后台呢,没有报任何异常,那这一块呢,都能持续进行响应,来看我们的吞吐量,吞吐量呢有十几,但是呢,我们即使持续运行期间,我们一定不会出现我们之前的内存爆满,移出把应用的挤标线的情况,所以呢,这是我们说的这个压力测试,当然不同的压测呢,会有不同的这个指标,我们这个指标呢,可能跟之前的这个压测数据对比起来不标准,大家多压测几遍就行了,好,我把这块呢就停掉。
我来说两句