@HUST张友东 work@taobao zyd_com@126.com
分类: LINUX
2013-04-22 19:56:38
QA同学反映,对TFS进行压力测试时,网卡一直压不上去,看了下他们的测试环境,发现在测试时客户端的日志都是往屏幕打印的,将日志重定向到文件,压力马上上去了。日志打印到屏幕其实是个非常耗时的事情,打印到屏幕会影响到客户端的请求并发;这个问题解决了,QA同学又反映另一个奇怪的现象。
如下图所示,client1和client2的请求分别被定向到server1和server2。 (4台独立的物理机)
问题出现了,client1、client2都打印日志时,server1、server2的网卡都只能压到40MB/S,而这两个测试之间是独立的。
分析发现,这两个测试唯一共享的资源就是我工作PC的SecureCRT终端。client1、client2打印到日志,最终是要通过网络传输到我PC上的SecureCRT打印的,case3里日志打印对测试无影响,因为这时传输到SecureCRT的日志量还没有达到影响测试的程度;而case4里两个client都打印时,日志都要传输到SecureCRT,此时PC的网卡就成为瓶颈了,client1、client2打印的日志要等待传输到PC上打印,最终导致client的并发上不去,从而server上的压力上不去。
验证:通过两个不同的PC,分别登录到client1、client2,重新测试case4,结果server1、server2的网卡都能压到90MB/S。
原因真的很坑爹,但通过ssh客户端(secureCRT、xshell、putty等)登录到多个server应该是很常见的工作模式,此时往屏幕打印信息不光对自身有影响,也会影响到其他登录的server,所以性能或压力测试时,强烈建议不要打印日志到屏幕上。