我正在努力提高网络应用的性能.分析应用程序本身,我发现它的响应时间是可以接受的(100ms-200ms),但是当我使用ApacheBench测试应用程序时,响应时间有时超过1秒.当我仔细查看日志时,偶尔发现request_time和upstream_response_time之间存在很大差异:
@H_502_5@"GET /wsq/p/12 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.940 0.286
"GET /wsq/p/31 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.200 0.086
upstream_response_time非常接近我在Web应用程序中的分析,但request_time对于第一个请求接近一秒.
什么可能导致这种差异?
我知道request_time是从收到的第一个字节记录到最后一个响应字节发送的,它可能会受到网络状况和客户端问题的影响.我想知道我该怎么做才能尽可能地减少平均request_time?
较高的request_time可能是由于连接速度较慢的客户端造成的,您无法做多.因此,高request_time不一定代表服务器和/或应用程序的性能.
在分析时,你真的不应该在request_time上花费太多时间,而是测量应用程序的响应时间(即upstream_response_time).
也就是说,有些事情你可以做,可能会影响request_time.其中一些如下:
>在高速网络上移动服务器
>将您的服务器移动到客户端附近
>禁用Nagle’s algorithm
>调整服务器的TCP堆栈(参见this article).然而,这些并不一定会产生很大的不同,因为内核可以很好地为您调整它们.