【架构训练 Week07 作业】
作业1:性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
随着并发量增加,在到达系统最大负载点之前,系统的响应时间会逐渐缓慢增加,吞吐量也会逐渐增加,两者是正相关的,因为有足够的系统资源来处理用户请求;
超过服务器系统最大负载点后,系统资源逐渐不足,出现排队等待处理用户的请求,请求量也会减少,所以逐渐地较快地出现吞吐量减少,而请求的响应时间会较快的增加,直到系统资源完全不足后,系统还可能出现崩溃宕机。
如下图
本周学习总结
本周主要学习了性能测试和性能优化方法,其中关于进程和线程的较为简明,之前对他们以及锁容易混淆,现在稍微梳理一下
进程-Process,描述的就是程序的执行过程,是运行着的程序的代表。所以,一个进程其实就是某个程序运行时的一个产物。如果说静静躺在那里的代码就是程序的话,那么运行着的、正在发挥着既有功能的代码就可以被称为进程。
线程-Thread,
* 首先线程总是在进程之内的,它可以被视为进程中运行者的控制流(或者说代码执行的流程)。
* 一个进程至少会包含一个线程。如果一个进程只包含了一个线程,那么它里面的所有代码都只会被串行地执行。每个进程的第一个线程都会随着该进程的启动而被创建,他们可以被称为其所属进程的主线程
* 相对应的,如果一个进程中包含了多个线程,那么其中的代码就可以被并发地执行。除了进程的第一个线程之外,其他的线程都是由进程中已存在的线程创建出来的。
* 也就是说,主线程之外的其他线程都只能由代码显式地创建和销毁。这需要我们在编写程序的时候,进行手动控制,操作系统以及进程本身并不会帮我们下达这样的指令
* 不过,在Go程序当中,Go语言的运行时(runtime)系统会帮助我们自动地创建和销毁系统级线程,这里的系统级线程指的就是我们刚刚说过的操作系统提供的线程
* 而对应的用户级线程指的是架设在系统级线程之上的,由用户(或者说我们编写的程序)完全控制的代码执行流程。用户级线程的创建、销毁、调度、状态变更以及其中的代码和数据都完全需要我们的程序自己去实现和处理)
版权声明: 本文为 InfoQ 作者【Rex】的原创文章。
原文链接:【http://xie.infoq.cn/article/a9b100325049101574392245a】。文章转载请联系作者。
评论 (1 条评论)