2012-02-03 1 views
1

Я хотел бы одновременно имитировать соединения тысяч клиентов на моем сервере, чтобы узнать, может ли он справиться с этим? Я просто пытаюсь использовать мой симулятор iPhone и iPhone для создания соединений, но это не симуляция в реальном времени. Как я могу выполнить нагрузочный тест?Как загрузить тестовое приложение на основе clis/server redis, twisted and iPhone

Вот пример моего кода сервера:

from twisted.internet.protocol import Factory, Protocol 
from twisted.internet import defer 

class STSFactory(Factory): 
    def __init__(self,conn): 
     self.conn = conn 
     self.protocol = STSProtocol 

class STSProtocol(Protocol): 
    def log(self, message): 
     print "%s: %s" % (self, message) 
    def connectionMade(self): 
     self.log("Connection made") 
    def connectionLost(self, reason): 
     self.factory.clients.remove(self) 
     self.log("Connection Lost") 
    @defer.inlineCallbacks 
    def getUser(self,user): 
     val = yield self.factory.conn.hgetall("user:%s"%user)   
    def dataReceived(self, data): 
     cmd = data.split(':')   
     command = cmd[0]   
     arg1 = cmd[1] 
     arg2 = cmd[2] 
     if arg1 == "logon": 
      self.getUser(arg2) 
if __name__ == '__main__': 
    from twisted.internet import reactor 
    import redis 
    conn = redis.Redis(unix_socket_path='/tmp/redis.sock') 
    factory = STSFactory(conn) 
    factory.clients = [] 

    print "Server started" 
    reactor.listenTCP(11000,factory) 
    reactor.listenTCP(11001,factory) 
    reactor.listenTCP(11002,factory) 
    reactor.run() 
+0

Где вы застряли? Ответ на заданный вами вопрос: «Как загрузить тестовое приложение с тысячами клиентов?» ответил «Ударив его тысячами клиентов и измеряя, что происходит». Если вам нужен более подробный или конкретный ответ, вам нужно задать более подробный и конкретный вопрос. Альтернатива, если кто-то создаст приложение для тестирования нагрузки для вас в SO-ответе, вряд ли произойдет. –

+0

Я не прошу кого-нибудь написать мне тестовое приложение. Мне интересно, как загрузить сервер, прежде чем идти в производство, чтобы увидеть, будет ли он обрабатывать нагрузку или нет. Я пытаюсь загрузить систему с помощью симулятора iPhone, и я не верю, что это правильный путь. Мне просто интересно, есть ли какое-либо программное обеспечение или инструменты, которые можно использовать, спрашивая опытных людей. – Bora

ответ

1

Как и где хостинг сервер? В простом случае вы можете использовать осаду с локального компьютера (осадной URL-адрес, которые будут большинство запросов) http://www.joedog.org/index/siege-home

Вы также можете воспользоваться услугой как Blitz.io http://blitz.io/ вы можете загрузить службу из различных географических районов (что делает огромную разницу в производительности). Существует множество таких сервисов, как поиск веб-загрузки. Мне нравится Blitz, потому что я использую Heroku, и он прекрасно сочетается с ним.

3

Существует отличный инструмент для тестирования нагрузки, называемый Locust. Вы можете написать тестовые сценарии в python, масштабировать и даже иметь веб-интерфейс, если вам это нужно.