思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发

Posted big1987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发相关的知识,希望对你有一定的参考价值。


思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发
如果没有理清楚上述概念和它们之间的关系,那么优化会毫无章法;
线程越多,利用上的线程越多,cpu的idle会约低,只到cpu低得不能再低,一般情况下,可以可劲用(idle为10%你遇到过吗?),但是要注意你的下游能否能扛得住你转嫁给他们的并发压力呢;
单个任务处理越快,qps和并发会越高;
两个线程的并发一定是一个线程的两倍,10个线程的并发一定是2个线程的5倍;
qps是一秒处理的任务数,这个换算逻辑是:假如一个任务是100ms,有10个线程,那么并发是10,qps是(1000/ 100) * 10 = 100,
注意,这里是理想情况下的理论换算,理想的意思是每个任务都是100ms,时间不多不少;
网络都有一个出口,对于请求方来说,出口就是到你的网络服务里面,如果你不接收,或者你接收不了(就那么几个工作线程都还一直忙着呢),那么
对于请求方来说,就会超时(超过预期时间),你可以先接收,后处理,但是如果你单个任务处理能力没有提升,工作线程没有增多,就算接收也是没用的;
所以,对于网络服务所在机器的cpu如果idle很低,有两个原因造成的,一个是单个任务的计算量很大,使用了很多的cpu资源,一个是你接收而且确实同时处理了
大量的并发任务,这些任务并行执行加起来让cpu的idle很低;针对这两种情况,也给了我们解决问题的两个思路:一个是让单个任务处理更高效,耗时更短;一个是
增加我们的线程数,让更多的线程跑起来,让cpu更加忙碌起来;

以上是关于思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发的主要内容,如果未能解决你的问题,请参考以下文章

数据库的性能优化的一些思考

mysql性能问题

Linux性能问题分析流程与性能优化思路

好书摘要性能优化中CPU内存磁盘IO网络性能的依赖

《大型网站性能优化指南——从前端网络CDN到后端大促的全链路性能优化详解》读后感和一点思考

Node.js 性能优化