性能优化总结:CPU和Load、NIO以及多线程
上一篇 /
下一篇 2011-12-13 16:18:05
/ 个人分类:性能测试
1]Ye)ijq,\$z0当应用遇到规模化问题的时候,就是考虑性能优化的时候了。今天同事和我聊起了NIO在客户端的使用与BIO有什么优势,也勾起了我前一阵子和其他同学交流优化的一些想法,纯粹个人的一点想法。
4B-K^
FLWl051Testing软件测试网D:L#i(IL;wYCPU利用率和Load51Testing软件测试网 ch(Ob%eq"b:gf]1}
QUj a_@!F1\3ip4z G'a0在过去做压力测试的时候,我们经常会关注两个指标,CPU和Load。有同学觉得CPU利用率上去了Load肯定也上去了,Load上去了CPU利用率同样会上去。但是在一些需要优化的场景下,常常会看到Load很高,CPU利用率却可能比较低(多核更是可能出现分配不均的情况)。Load其实就是等待处理的任务队列,当你的应用在等待同步消息返回处理的同时,CPU还是会将时间切片分配给这些线程,而真正需要CPU的线程,却不得不在到了时间片以后暂时放弃工作被挂起。因此在程序设计的时候就要考虑如何利用好CPU的这个资源,如何均匀的将压力分摊到各个CPU上(有时候就一个线程在不断循环,导致单个CPU负荷很高)。
x
n;xnG j5O#W^0h7h)nV r/eM%[K0NIO在客户端的使用
n[
@/R
W(\2v0f0mr pgXi0Http消息设置keepalive和采用NIO的方式复用信道、BIO结合连接池的方式,最基本的目的就是降低建立TCP产生握手的成本,最大限度的复用已有的资源,但是否NIO就只有复用信道这点呢?
^:S,V$OA"bU?0