Как загрузить тестовое клиентское / серверное приложение Redis, Twisted и iPhone - PullRequest
1 голос
/ 03 февраля 2012

Я хотел бы смоделировать соединения тысяч клиентов одновременно с моим сервером, чтобы посмотреть, сможет ли он справиться с этим? Я просто пытаюсь использовать симуляторы iPhone и 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()

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

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

1 голос
/ 06 февраля 2012

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

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

...