You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "James E. King III (JIRA)" <ji...@apache.org> on 2019/01/27 15:30:00 UTC

[jira] [Closed] (THRIFT-3289) Socket exhaustion in csharp implementation

     [ https://issues.apache.org/jira/browse/THRIFT-3289?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

James E. King III closed THRIFT-3289.
-------------------------------------
    Resolution: Not A Problem
      Assignee: James E. King III

As discussed in the ticket, it sounds like you should add a connection cache to your client that can dole out a connection to the server for exclusive use by a thread, and then bring it back into the cache when the thread is done; this way you do not incur the connection setup overhead (which is significant if it is SSL/TLS) nor run into issues like resource exhaustion due to TIMED_WAIT.

> Socket exhaustion in csharp implementation
> ------------------------------------------
>
>                 Key: THRIFT-3289
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3289
>             Project: Thrift
>          Issue Type: Bug
>          Components: C# - Library
>    Affects Versions: 0.9.1
>            Reporter: Diogo Costa
>            Assignee: James E. King III
>            Priority: Critical
>
> I'm currently running local load tests between my (local) thrift client and local thrift server.
> The test consists of a webpage that makes an RPC call to the thrift server using a thrift client and returns the information to the browser. With JMeter I'm seeing the performance of both processes under load.
> At some point in the load I get a System.Net.Sockets.SocketException when creating a new client with the message "An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full...".
> I'm using a TServerSocket and a TThreadPoolServer on the server and a new instance of TSocket per client request. All instances seem to be disposed properly.
> The TSocket doesn't seem to be threadsafe. Am I supposed to create a TSocket connection pool in the client so I don't overwhelm the server with creating and destroying network sockets?
> Shouldn't there be some connection pooling available in the server implementation?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)