请教下在高并发的情况下,网络IO的处理效率问题
用nodejs封装了一层应用层接口做webservice,使用了request去请求底层的http接口,这些接口因为计算的原因,普遍都在100ms以上(同一机房,网络延时可以忽略),我使用apache的ab压测,底层接口本身大约是200的qps。我封的node服务却只有70多qps,把请求接口注销掉的话有1000+qps。而且我打印了下请求接口的时间,同样的压力,比直接压测底层接口的时间多了几倍(400ms+)。 搜了下,libeio只有4个线程?是因为请求时间太长,libeio的线程被占用吗,类似于高速路上的收费站?不过我将pool.maxSocket改成200+后,qps达到了190左右。不太明白这块的原理,也没搜到理想的结果。所以想请教下各位这块的原理以及怎么处理会比较好
5 回复
对,多核,但是cluster还是Stability 1阶段。我这个线上重要服务还是不冒险使用处于试验性的,而且本身是放在nginx后的,所以会选择开多个进程。 关键是如果libeio就4个线程,如果请求的http接口时间比较长的话,感觉怎么这块都会是一个很大的瓶颈