网络性能优化

高并发网络编程的性能测试一直是个非常难的问题
困难点:
1 纯网络性能测试会把业务逻辑最小化,需要一定的改造。
2测试虚要给服务器足够的压力,这样对于测试用的客户端的QPS就有较高的要求
解决方案,
1 将业务逻辑跟网络框架拆分
2 我们可以开启多个实例
 
我们用来测试的代码库就是 https://www.cnblogs.com/nerdlerss/p/9035928.html
中的库,在这个库中,我们把业务逻辑跟网络框架进行了拆分

我们的业务代码就是

counter = 0   
if __name__ == '__main__':
              
    def logic(d_in):
        global counter
        counter += 1
        if counter %100000 ==0:   
            print counter,time.time()
        return(d_in[::-1])
    reverseD = nbNet('0.0.0.0', 9099, logic)
    reverseD.run()

  说白了就是 每响应10w下答应一下时间

我们测试端代码

#!/usr/bin/env python

import socket, sys, os

HOST = '127.0.0.1'
PORT = 9099
CNT = int(sys.argv[2])

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

cmd = sys.argv[1]
data = "%010d%s"%(len(cmd), cmd)
while True:
    s.send(data * CNT)
    s.recv(len(data) * CNT)

但是我们的客户端是不可能打到server端的性能瓶颈的,我们可以开启多个终端,启动多个实例,这样达到我们性能要求

在python内建了一个 profiler工具,可以帮我们定位性能瓶颈

猜你喜欢

转载自www.cnblogs.com/nerdlerss/p/9084337.html