乐趣区

关于python:Python-进程数线程数调参指引

过程数

当单过程 cpu 耗费靠近 80% 时,代表达到单过程解决的下限;业务上尽量保障单过程 cpu <75%, 以应答突发状况;

  1. 多过程的长处和弊病
    长处:

    • 进步业务零碎的解决能力
    • 充分利用多核 CPU

    弊病:

    • 过程越多,占用资源越多,内存(疏忽),redis,mysql 连接数会乘数级别增高
    • 过程间通信效率不如过程内通信的效率;
  2. 如何评估过程数量?
    a. 评估单过程的解决能力

    • 评估时,保障单过程 CPU 占用率 70%,此时的业务解决能力就是咱们的一个标尺,比方单过程能解决 30 个路口;
    • 业务上,如果应用多线程,通过适合的调整多线程数量,解决 IO 操作问题,晋升单过程 CPU 使用率;

      • 线程数不宜过多,否则都是线程切换开销,如果线程超过 50 个(集体主观),应该重点关注是否影响性能;
      • 线程调整过程中,每次应该适量调整,进行察看;
    • 业务上,如果应用协程,因为协程数量减少,根本不会影响性能(协程的劣势就在于此),协程数量可随便配置,通过观察 CPU 使用率,失去一个主观的评估;

    b. 过程数量的计算

    通过单过程的业务解决能力,依据业务大小,可计算出过程数量

线程数(协程同理)

因为单过程只能利用一个 CPU, 因而线程数的调整,旨在解决 IO 密集(网络 IO)问题;

  1. 如何优化线程数量;
    a. 根本条件:

     * 每秒须要解决的解决的业务数为 a 条,假如业务数是平均产生
     * 业务函数解决时长(蕴含 IO) 为  X s
     * 业务容许的解决延时为                Y s (Y > X)

    b. 横向并发优化:

     * 将业务函数运行在等价的多线程里;* 思考业务不积压,不思考延时,多线程数 n = a * (1/X) = a * X
     * 思考业务不积压,延时符合要求,状况简单,临时没有碰到此种状况,且次要是争对业务非平均产生的状况,比方一一分钟一次产生 N 条业务数;

    c. 纵向并发优化:

     * 因非凡起因,业务函数无奈横向并发优化(保障时序性),可进行纵向优化;* 将业务函数拆分多个前后依赖的小函数,将小函数运行在多线程里;* 最终业务函数的解决时长(蕴含 IO)由 X 缩减为 max(X1, X2,...)
    
退出移动版