1

Websocketサーバーでストレステストを実行して、同時にサービスを提供できるクライアントの数と、その数に依存するものを測定しています。

私が使用しているサーバー実装は、Apache サーバーの拡張である pywebsocket です。どうやら、これにより、新しいクライアントごとに新しいスレッドが作成されます。

問題は、私が378 個のクライアントまでしか移動できず、常に同じ数 (そしてかなり低い) であり、次のクライアントでは次のトレースを受け取ることです。

[2013-08-22 07:47:09,454] [ERROR] __main__.WebSocketServer: Exception in processing request from: ('::ffff:10.36.154.147', 41509, 0, 0)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 594, in process_request
    t.start()
  File "/usr/lib/python2.7/threading.py", line 495, in start
    _start_new_thread(self.__bootstrap, ())
**error: can't start new thread**

この制限がどこから来るのか本当にわかりません。プロセスの最大スレッド数が無制限に設定されているか、ユーザーのプロセスの最大数が無制限に設定されているようです。 .

apache2 構成ファイルも確認しましたが、これは apache2.conf にあるもので十分です。

MaxKeepAliveRequests 0
KeepAliveTimeout 5


<IfModule mpm_prefork_module>
    StartServers          50
    ServerLimit      2000
    MinSpareServers       50
    MaxSpareServers      2000
    MaxClients           2000
    MaxRequestsPerChild   2000
</IfModule>

<IfModule mpm_worker_module>
    StartServers          50
    ServerLimit      2000
    MinSpareThreads      50
    MaxSpareThreads      2000 
    ThreadLimit          0
    ThreadsPerChild      2000
    MaxClients           2000
    MaxRequestsPerChild  2000
</IfModule>

<IfModule mpm_event_module>
    StartServers          50
    ServerLimit      2000
    MinSpareThreads      50
    MaxSpareThreads      2000 
    ThreadLimit          0
    ThreadsPerChild      2000
    MaxClients           2000
    MaxRequestsPerChild  2000
</IfModule>

サーバーは、ubuntu を使用した Amazon EC2 t1.micro インスタンスです。

他に何がこの制限を引き起こしている可能性がありますか?

4

1 に答える 1