다음 샘플 코드가 내 서버에서 실행되고 있습니다.서버 응답 시간을 개선 할 수 있습니까?
이import socket
import select
def main():
bind = ("0.0.0.0", 28889)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(bind)
server_socket.listen(50)
server_socket.setblocking(0)
server_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
clients = {}
epoll = select.epoll() # @UndefinedVariable
epoll.register(server_socket.fileno(), select.EPOLLIN) # @UndefinedVariable
while 1:
events = epoll.poll(1)
for (fileno, event) in events:
if fileno == server_socket.fileno():
sock, addr = server_socket.accept()
sock.setblocking(0)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
fileno = sock.fileno()
epoll.register(fileno, select.EPOLLIN) # @UndefinedVariable
clients[fileno] = sock
elif event & select.EPOLLIN: # @UndefinedVariable
sock = clients[fileno]
try:
sock.recv(4096)
sock.send("~\n")
except socket.error:
sock.close()
del clients[fileno]
elif event & select.EPOLLHUP: # @UndefinedVariable
sock = clients[fileno]
sock.close()
del clients[fileno]
if __name__ == "__main__":
main()
내가 서버와 시간에 응답 시간 10 배를 연결하는 다음과 같은 클라이언트 코드가있다 : 여기
import socket
import time
def main():
sock = socket.socket()
sock.connect(("192.30.35.15", 28889))
for _ in xrange(10):
start_time = time.time()
sock.send("~\n")
sock.recv(2048)
end_time = time.time()
print "Ping: %.5f" % (end_time-start_time)
if __name__ == "__main__":
main()
이 결과 I 있습니다 뭔가를 읽고 즉시 응답 할 때 그것은 단순히 연결을 허용 그것을 실행에서 가져 오기 :
Ping: 0.09100
Ping: 0.11500
Ping: 0.87100
Ping: 0.24400
Ping: 0.49100
Ping: 1.45300
Ping: 0.74800
Ping: 1.59100
Ping: 0.43600
Ping: 0.27100
이것은 1.5 초까지 점프하는 핑 (ping)에서 꽤 나빠 보인다. 여기
나는 내가 서버에 ping 명령을 사용할 때 얻을 것 :
Reply from 192.30.35.15: bytes=32 time=83ms
왜 내 응답 시간이 너무 나쁜 내가 그것을 개선하기 위해 할 수있는 일이?
참고 : 이것은 저렴한 임대 서버입니다. 예상 할 수있는 최고입니까? 서버 관리에 대해 잘 모릅니다. 확인할 사항이 있습니까?
실행중인 ICMP 시간은 무엇입니까? 그보다 더 잘할 수는 없습니다. – xaxxon