背景描述:
最近做一个Mini项目,实现包括语音的及时通讯App,我负责后台的开发。底层的网络收发框架采用的是Libevent的bufferevent,是一个基于事件驱动的高效异步I/O框架,接口简单易懂,采用linux内核的Epoll实现网络事件触发。经过封装用在项目中,在和终端测试时出现问题:终端发送的Request包,Server回应的Response包居然延迟30s---2min不等。简直不能忍!
问题定位:
由于服务器架构分为介入层+逻辑层+存储层,每个来自终端的请求包,都要经过接入层的转发,在对应的逻辑层进行处理和响应。延迟的时间是在客户端?接入层?逻辑层?一个请求包从终端发出到接受到对应响应包为整个流程,可分为如下几个时间段: