问:简单假设一个服务的处理并发量为CPA, 每个请求的平均处理时间为rpt,则单位时间内的处理吞吐量为多少?
答:单位时间内,单个处理线程(worker)的处理量为1/rht,则总的吞吐量为 CPA/rpt。
类比一下:
假设某个红绿灯路口有CPA个车道,每辆车的平均通过时间为rpt,则单位时间内能通过路口的汽车数量为多少?
单位时间内一个车道的通车量为1/rpt,这个路口有CPA个车道,则总的通车量为CPA/rpt。
以上简单模型说明:
1)在服务处理并发量一定时,每个请求的平均处理时间越长,吞吐量越差,
越可能出现一些请求长时间等待而得不到处理的情况,请求等待超时乃至放弃的情况越容易发生;
从服务请求方来看:
2)当出现请求超时的情形时,首先想到的是减少请求次数,但更应该想到的是降低单个请求的处理时间,比如是否可以优化;
3)当出现请求超时的情形时,除了优化单个请求的处理时间外,也可以考虑把一个请求分解为多个,这样服务可以见缝插针地处理其他请求。
就比如路人甲上午去银行营业厅办事,如果有几位业务超复杂的人排在路人甲前面,那他想要在上午办完业务估计没戏了;
4)请求在发送的时间上不要过于集中,错峰出行,体验更佳,哈哈;
5)最后一招,延长等待超时时间,耐心等吧;
从服务处理方来看:
6)增加处理并发量CPA,可以增加吞吐量;
7)降低请求的处理时间,也可以增加吞吐量,比如:增加单个worker(如线程)的处理能力,或者优化数据查询时间等。