Processes当单进程cpu消耗接近80%时,说明已经达到单进程处理上限;业务方面,尽量保证单个进程的cpu<75%,以应对突发事件;进程优缺点优点:提高业务系统的处理能力充分利用多核CPU缺点:进程越多,占用资源越多,内存(忽略),redis,mysql连接数会增加multiplierlevel进程间通信效率不如进程内通信效率;如何评估进程数?A。评估单个进程的处理能力时,确保单个进程的CPU占用率为70%。此时的业务处理能力是我们的衡量标准之一。比如单个进程可以处理30个交集;业务方面,如果采用多线程,通过适当调整多线程数,解决IO操作问题,提高单进程CPU利用率;线程数不宜太多,否则会是线程切换的开销。如果超过50个线程(个人主观),要关注是否影响性能;线程在调整过程中,每次都要进行适当的调整以供观察;在业务方面,如果使用协程,基本不会因为协程数量的增加而影响性能(这是协程的优势),而且协程数量可以随意配置。观察CPU使用率得到主观评价;b.进程数的计算 通过单个进程的业务处理能力,可以根据业务的大小计算出进程数和线程数(协程也一样) 因为单个进程只能使用一个CPU,所以线程数的调整是为了解决IO密集型(网络IO)问题;如何优化线程数;A。基本条件:*每秒需要处理的业务数为a,假设业务数为Uniform生成*业务功能(包括IO)的处理时间为Xs*业务允许的处理延迟为Ys(Y>X)b.水平并发优化:*在等效的多线程中运行业务功能;*考虑没有业务积压,不考虑延迟,多线程数n=a*(1/X)=a*X*考虑没有业务积压,延迟满足要求,并且情况很复杂。这种情况我暂时没遇到过,主要是竞争业务生成不均匀,比如一分钟生成一次N个业务;C。垂直并发优化:*由于特殊原因,业务功能无法进行水平并发优化(保证时序),可以进行垂直优化;*将业务功能拆分成多个相互依赖的小功能,并在多个线程中运行小功能;*最终业务功能(包括IO)的处理时间从X减少到max(X1,X2,...)
