性能问题解决了
今天终于把Thumbnail Service的性能问题解决了。
之前一直在客户端侧找原因,看现象一直是觉得客户端发命令发晚了。
今天一咬牙用格式化打印出16进制和字符的方式把客户端要发的内容都打印出来,发现命令没发晚。
但是从服务器端看,服务器端的命令handler收到命令确实晚了!
于是想到一种情况,是不是服务器端收命令其实不晚,只是把命令dispatch到handler晚了。
然后试着把收到的数据的长度变化都打出来,发现服务器端收到的数据并且没处理的越来越多!
然后想通了!
原来每收到一次数据,不管这次数据包含了多少条命令,服务器端都只处理一条命令,也就是dispatch一条到某个handler,剩下的数据中其他的命令都要下次才会处理,于是只要一次收到多条命令的情况持续出现,那么命令处理的延时就会越来越严重。
解决也很简单,每收一次数据,都尽量多地dispatch命令。
效果很明显,根据客户端集成的同事讲,“速度现在巨快”,“简直棒呆了”。