Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-26 Thread Check Peck
Thanks Oleg. Also I was not able to understand what does
setExpectContinueEnabled mean? Should this be enabled or disabled for
performance improvements?

On Fri, Jun 26, 2015 at 1:22 AM, Oleg Kalnichevski  wrote:

> On Thu, 2015-06-25 at 12:33 -0700, Check Peck wrote:
> > Thanks Oleg. Got the idea now. Basically earlier, I was not using setting
> > any timeout value on Http request but I was setting the timeout value on
> my
> > Future and by default the timeout value on http request was -1 so it was
> > waiting for most of the time and that's why I was seeing lot of
> TIME_WAIT.
> > I have made the code changes like this now:
> >
> > This is the request factory I am setting on my RestTemplate now. I wanted
> > to check with you to see, do you think these settings are ok for better
> > performance?
> >
> > private ClientHttpRequestFactory clientHttpRequestFactory() {
> > HttpComponentsClientHttpRequestFactory requestFactory = new
> > HttpComponentsClientHttpRequestFactory();
> > RequestConfig requestConfig =
> >
> RequestConfig.custom().setConnectionRequestTimeout(1000).setConnectTimeout(1000)
> >
> > .setSocketTimeout(1000).setStaleConnectionCheckEnabled(false).build();
> > SocketConfig socketConfig =
> > SocketConfig.custom().setSoKeepAlive(true).setTcpNoDelay(true).build();
> >
> > PoolingHttpClientConnectionManager
> > poolingHttpClientConnectionManager = new
> > PoolingHttpClientConnectionManager();
> > poolingHttpClientConnectionManager.setMaxTotal(800);
> >
>  poolingHttpClientConnectionManager.setDefaultMaxPerRoute(700);
> >
> > CloseableHttpClient httpClientBuilder =
> > HttpClientBuilder.create()
> >
> >
> .setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig)
> > .setDefaultSocketConfig(socketConfig).build();
> >
> > requestFactory.setHttpClient(httpClientBuilder);
> > return requestFactory;
> > }
> >
>
> Settings look reasonable to me.
>
> Oleg
>
>
>
> -
> To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
> For additional commands, e-mail: httpclient-users-h...@hc.apache.org
>
>


Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-26 Thread Oleg Kalnichevski
On Thu, 2015-06-25 at 12:33 -0700, Check Peck wrote:
> Thanks Oleg. Got the idea now. Basically earlier, I was not using setting
> any timeout value on Http request but I was setting the timeout value on my
> Future and by default the timeout value on http request was -1 so it was
> waiting for most of the time and that's why I was seeing lot of TIME_WAIT.
> I have made the code changes like this now:
> 
> This is the request factory I am setting on my RestTemplate now. I wanted
> to check with you to see, do you think these settings are ok for better
> performance?
> 
> private ClientHttpRequestFactory clientHttpRequestFactory() {
> HttpComponentsClientHttpRequestFactory requestFactory = new
> HttpComponentsClientHttpRequestFactory();
> RequestConfig requestConfig =
> RequestConfig.custom().setConnectionRequestTimeout(1000).setConnectTimeout(1000)
> 
> .setSocketTimeout(1000).setStaleConnectionCheckEnabled(false).build();
> SocketConfig socketConfig =
> SocketConfig.custom().setSoKeepAlive(true).setTcpNoDelay(true).build();
> 
> PoolingHttpClientConnectionManager
> poolingHttpClientConnectionManager = new
> PoolingHttpClientConnectionManager();
> poolingHttpClientConnectionManager.setMaxTotal(800);
> poolingHttpClientConnectionManager.setDefaultMaxPerRoute(700);
> 
> CloseableHttpClient httpClientBuilder =
> HttpClientBuilder.create()
> 
> .setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig)
> .setDefaultSocketConfig(socketConfig).build();
> 
> requestFactory.setHttpClient(httpClientBuilder);
> return requestFactory;
> }
> 

Settings look reasonable to me.

Oleg



-
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org



Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-25 Thread Check Peck
Thanks Oleg. Got the idea now. Basically earlier, I was not using setting
any timeout value on Http request but I was setting the timeout value on my
Future and by default the timeout value on http request was -1 so it was
waiting for most of the time and that's why I was seeing lot of TIME_WAIT.
I have made the code changes like this now:

This is the request factory I am setting on my RestTemplate now. I wanted
to check with you to see, do you think these settings are ok for better
performance?

private ClientHttpRequestFactory clientHttpRequestFactory() {
HttpComponentsClientHttpRequestFactory requestFactory = new
HttpComponentsClientHttpRequestFactory();
RequestConfig requestConfig =
RequestConfig.custom().setConnectionRequestTimeout(1000).setConnectTimeout(1000)

.setSocketTimeout(1000).setStaleConnectionCheckEnabled(false).build();
SocketConfig socketConfig =
SocketConfig.custom().setSoKeepAlive(true).setTcpNoDelay(true).build();

PoolingHttpClientConnectionManager
poolingHttpClientConnectionManager = new
PoolingHttpClientConnectionManager();
poolingHttpClientConnectionManager.setMaxTotal(800);
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(700);

CloseableHttpClient httpClientBuilder =
HttpClientBuilder.create()

.setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig)
.setDefaultSocketConfig(socketConfig).build();

requestFactory.setHttpClient(httpClientBuilder);
return requestFactory;
}

On Fri, Jun 5, 2015 at 1:04 AM, Oleg Kalnichevski  wrote:

> On Thu, 2015-06-04 at 15:32 -0700, Check Peck wrote:
> > @Michael: Thanks for your suggestion. Can you explain me why do you
> think,
> > it's a TCP issue? I was assuming may be the way I am using RestTemplate
> in
> > my code might not be right and that's why it might be resulting in
> > TIME_WAIT connections a lot on the machine where I have my code deployed
> > which makes Http Call to my RestService? In the company I am working
> here,
> > they have their own Parent POM in which they have spring dependency, the
> > latest I can get for Spring is 3.2.8: I am not sure whether Spring 3.2.8
> > uses new version of HttpClient or not. I did check the first github link
> > you provided but I was not able to find "ivy.xml" file in 3.2.x branch so
> > cannot confirm that. May be you know some other way to confirm that. I
> can
> > use Spring 3.2.8 version max here. And also, do you see any issues with
> the
> > way I am using RestTemplate here, I am just using default way of making
> > HttpClient calls, may be I need to have some sort of extra parameter to
> > resolve this issue? Are there anything I need to set while making
> > RestTemplate calls like "Connection: close" or "keep-alive" anything like
> > this? And also do you think the way I am using RestTemplate will
> reuse/pool
> > my client connections or not?
> >
> > @Stefan: I am using RestTemplate in default way as shown in my above
> code.
> > I am assuming, it will be reusing/pooling my connections right? I did
> > google the issue and I found out lot of things, like lowering down the
> > "tcp_fin_timeout" value from 60 to 30 and some other stuff as mentioned
> > here in this article:
> >
> > http://www.fromdual.com/huge-amount-of-time-wait-connections
> >
> > But I was trying to confirm whether it might be related to how I am using
> > RestTemplate or it is a OS issue? If I can confirm it's an OS issue,
> then I
> > will look into that and if let's say the way I am using RestTemplate is
> not
> > right, then I might try improving my code to see whether the problem goes
> > away or not. I am thinking may be the way I am using RestTemplate is not
> > right? May be I need to have "keep-alive" options on?
> >
>
> Connections in TIME_WAIT are perfectly normal depending on your OS
> systems and do not represent an issue with HttpClient resource
> management.
>
> For details see
>
> http://wiki.apache.org/HttpComponents/FrequentlyAskedConnectionManagementQuestions
>
> Oleg
>
>
> >
> > On Thu, Jun 4, 2015 at 12:52 PM, Stefan Magnus Landrø <
> > stefan.lan...@gmail.com> wrote:
> >
> > > I presume you are reusing/pooling your client connections, right?
> > > Also - you could tune your OS to shutdown connections faster. You can
> > > easily google you issue.
> > >
> > > Stefan
> > >
> > > 2015-06-04 17:51 GMT+02:00 Check Peck :
> > >
> > > > I am using Spring RestTemplate to make a HTTP Calls to my
> RestService. I
> > > am
> > > > using spring framework 3.1.1 version of RestTemplate. I cannot
> upgrade
> > > this
> > > > since that's what we are using in our company.
> > > >
> > > > Now machine which is running my code (which uses RestTemplate) to
> make
> > > call
> > > > to my RestService, I see lot of TIME_WAIT connections opened on that
> > > > particular machine?
> > > >
> > > > - Is there any reason why it happe

Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-05 Thread Oleg Kalnichevski
On Thu, 2015-06-04 at 15:32 -0700, Check Peck wrote:
> @Michael: Thanks for your suggestion. Can you explain me why do you think,
> it's a TCP issue? I was assuming may be the way I am using RestTemplate in
> my code might not be right and that's why it might be resulting in
> TIME_WAIT connections a lot on the machine where I have my code deployed
> which makes Http Call to my RestService? In the company I am working here,
> they have their own Parent POM in which they have spring dependency, the
> latest I can get for Spring is 3.2.8: I am not sure whether Spring 3.2.8
> uses new version of HttpClient or not. I did check the first github link
> you provided but I was not able to find "ivy.xml" file in 3.2.x branch so
> cannot confirm that. May be you know some other way to confirm that. I can
> use Spring 3.2.8 version max here. And also, do you see any issues with the
> way I am using RestTemplate here, I am just using default way of making
> HttpClient calls, may be I need to have some sort of extra parameter to
> resolve this issue? Are there anything I need to set while making
> RestTemplate calls like "Connection: close" or "keep-alive" anything like
> this? And also do you think the way I am using RestTemplate will reuse/pool
> my client connections or not?
> 
> @Stefan: I am using RestTemplate in default way as shown in my above code.
> I am assuming, it will be reusing/pooling my connections right? I did
> google the issue and I found out lot of things, like lowering down the
> "tcp_fin_timeout" value from 60 to 30 and some other stuff as mentioned
> here in this article:
> 
> http://www.fromdual.com/huge-amount-of-time-wait-connections
> 
> But I was trying to confirm whether it might be related to how I am using
> RestTemplate or it is a OS issue? If I can confirm it's an OS issue, then I
> will look into that and if let's say the way I am using RestTemplate is not
> right, then I might try improving my code to see whether the problem goes
> away or not. I am thinking may be the way I am using RestTemplate is not
> right? May be I need to have "keep-alive" options on?
> 

Connections in TIME_WAIT are perfectly normal depending on your OS
systems and do not represent an issue with HttpClient resource
management.

For details see
http://wiki.apache.org/HttpComponents/FrequentlyAskedConnectionManagementQuestions

Oleg 


> 
> On Thu, Jun 4, 2015 at 12:52 PM, Stefan Magnus Landrø <
> stefan.lan...@gmail.com> wrote:
> 
> > I presume you are reusing/pooling your client connections, right?
> > Also - you could tune your OS to shutdown connections faster. You can
> > easily google you issue.
> >
> > Stefan
> >
> > 2015-06-04 17:51 GMT+02:00 Check Peck :
> >
> > > I am using Spring RestTemplate to make a HTTP Calls to my RestService. I
> > am
> > > using spring framework 3.1.1 version of RestTemplate. I cannot upgrade
> > this
> > > since that's what we are using in our company.
> > >
> > > Now machine which is running my code (which uses RestTemplate) to make
> > call
> > > to my RestService, I see lot of TIME_WAIT connections opened on that
> > > particular machine?
> > >
> > > - Is there any reason why it happens with RestTemplate or the way I am
> > > using it?
> > > - Also, what is the connection between TIME_WAIT and HTTP Client calls to
> > > my RestService? I am not able to understand this as well. Does HTTP Calls
> > > has any significance on TIME_WAIT? There might be some theoretical
> > > explanation for this I guess.
> > >
> > > Below is how I am using RestTemplate in my code base:
> > >
> > > public class DataClient implements Client {
> > >
> > > private final RestTemplate restTemplate = new RestTemplate();
> > > private ExecutorService executor =
> > > Executors.newFixedThreadPool(10);
> > >
> > > // for synchronous call
> > > @Override
> > > public String getSyncData(DataKey key) {
> > > String response = null;
> > > Future handler = null;
> > > try {
> > > handler = getAsyncData(key);
> > > response = handler.get(key.getTimeout(),
> > > TimeUnit.MILLISECONDS);
> > > } catch (TimeoutException ex) {
> > > // log an exception
> > > handler.cancel(true);
> > > } catch (Exception ex) {
> > > // log an exception
> > > }
> > >
> > > return response;
> > > }
> > >
> > > // for asynchronous call
> > > @Override
> > > public Future getAsyncData(DataKey key) {
> > > Future future = null;
> > >
> > > try {
> > > Task task = new Task(key, restTemplate);
> > > future = executor.submit(task);
> > > } catch (Exception ex) {
> > > // log an exception
> > > }
> > >
> > > return future;
> > > }
> > > }
> > >
> > > And below is my simple Task class
> > 

Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-04 Thread Check Peck
@Michael: Thanks for your suggestion. Can you explain me why do you think,
it's a TCP issue? I was assuming may be the way I am using RestTemplate in
my code might not be right and that's why it might be resulting in
TIME_WAIT connections a lot on the machine where I have my code deployed
which makes Http Call to my RestService? In the company I am working here,
they have their own Parent POM in which they have spring dependency, the
latest I can get for Spring is 3.2.8: I am not sure whether Spring 3.2.8
uses new version of HttpClient or not. I did check the first github link
you provided but I was not able to find "ivy.xml" file in 3.2.x branch so
cannot confirm that. May be you know some other way to confirm that. I can
use Spring 3.2.8 version max here. And also, do you see any issues with the
way I am using RestTemplate here, I am just using default way of making
HttpClient calls, may be I need to have some sort of extra parameter to
resolve this issue? Are there anything I need to set while making
RestTemplate calls like "Connection: close" or "keep-alive" anything like
this? And also do you think the way I am using RestTemplate will reuse/pool
my client connections or not?

@Stefan: I am using RestTemplate in default way as shown in my above code.
I am assuming, it will be reusing/pooling my connections right? I did
google the issue and I found out lot of things, like lowering down the
"tcp_fin_timeout" value from 60 to 30 and some other stuff as mentioned
here in this article:

http://www.fromdual.com/huge-amount-of-time-wait-connections

But I was trying to confirm whether it might be related to how I am using
RestTemplate or it is a OS issue? If I can confirm it's an OS issue, then I
will look into that and if let's say the way I am using RestTemplate is not
right, then I might try improving my code to see whether the problem goes
away or not. I am thinking may be the way I am using RestTemplate is not
right? May be I need to have "keep-alive" options on?


On Thu, Jun 4, 2015 at 12:52 PM, Stefan Magnus Landrø <
stefan.lan...@gmail.com> wrote:

> I presume you are reusing/pooling your client connections, right?
> Also - you could tune your OS to shutdown connections faster. You can
> easily google you issue.
>
> Stefan
>
> 2015-06-04 17:51 GMT+02:00 Check Peck :
>
> > I am using Spring RestTemplate to make a HTTP Calls to my RestService. I
> am
> > using spring framework 3.1.1 version of RestTemplate. I cannot upgrade
> this
> > since that's what we are using in our company.
> >
> > Now machine which is running my code (which uses RestTemplate) to make
> call
> > to my RestService, I see lot of TIME_WAIT connections opened on that
> > particular machine?
> >
> > - Is there any reason why it happens with RestTemplate or the way I am
> > using it?
> > - Also, what is the connection between TIME_WAIT and HTTP Client calls to
> > my RestService? I am not able to understand this as well. Does HTTP Calls
> > has any significance on TIME_WAIT? There might be some theoretical
> > explanation for this I guess.
> >
> > Below is how I am using RestTemplate in my code base:
> >
> > public class DataClient implements Client {
> >
> > private final RestTemplate restTemplate = new RestTemplate();
> > private ExecutorService executor =
> > Executors.newFixedThreadPool(10);
> >
> > // for synchronous call
> > @Override
> > public String getSyncData(DataKey key) {
> > String response = null;
> > Future handler = null;
> > try {
> > handler = getAsyncData(key);
> > response = handler.get(key.getTimeout(),
> > TimeUnit.MILLISECONDS);
> > } catch (TimeoutException ex) {
> > // log an exception
> > handler.cancel(true);
> > } catch (Exception ex) {
> > // log an exception
> > }
> >
> > return response;
> > }
> >
> > // for asynchronous call
> > @Override
> > public Future getAsyncData(DataKey key) {
> > Future future = null;
> >
> > try {
> > Task task = new Task(key, restTemplate);
> > future = executor.submit(task);
> > } catch (Exception ex) {
> > // log an exception
> > }
> >
> > return future;
> > }
> > }
> >
> > And below is my simple Task class
> >
> > class Task implements Callable {
> >
> > private final RestTemplate restTemplate;
> > private final DataKey key;
> >
> > public Task(DataKey key, RestTemplate restTemplate) {
> > this.key = key;
> > this.restTemplate = restTemplate;
> > }
> >
> > public String call() throws Exception {
> > ResponseEntity response = null;
> >
> > String url = "some_url_created_by_using_key";
> >
> > // handling all try catch 

Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-04 Thread Stefan Magnus Landrø
I presume you are reusing/pooling your client connections, right?
Also - you could tune your OS to shutdown connections faster. You can
easily google you issue.

Stefan

2015-06-04 17:51 GMT+02:00 Check Peck :

> I am using Spring RestTemplate to make a HTTP Calls to my RestService. I am
> using spring framework 3.1.1 version of RestTemplate. I cannot upgrade this
> since that's what we are using in our company.
>
> Now machine which is running my code (which uses RestTemplate) to make call
> to my RestService, I see lot of TIME_WAIT connections opened on that
> particular machine?
>
> - Is there any reason why it happens with RestTemplate or the way I am
> using it?
> - Also, what is the connection between TIME_WAIT and HTTP Client calls to
> my RestService? I am not able to understand this as well. Does HTTP Calls
> has any significance on TIME_WAIT? There might be some theoretical
> explanation for this I guess.
>
> Below is how I am using RestTemplate in my code base:
>
> public class DataClient implements Client {
>
> private final RestTemplate restTemplate = new RestTemplate();
> private ExecutorService executor =
> Executors.newFixedThreadPool(10);
>
> // for synchronous call
> @Override
> public String getSyncData(DataKey key) {
> String response = null;
> Future handler = null;
> try {
> handler = getAsyncData(key);
> response = handler.get(key.getTimeout(),
> TimeUnit.MILLISECONDS);
> } catch (TimeoutException ex) {
> // log an exception
> handler.cancel(true);
> } catch (Exception ex) {
> // log an exception
> }
>
> return response;
> }
>
> // for asynchronous call
> @Override
> public Future getAsyncData(DataKey key) {
> Future future = null;
>
> try {
> Task task = new Task(key, restTemplate);
> future = executor.submit(task);
> } catch (Exception ex) {
> // log an exception
> }
>
> return future;
> }
> }
>
> And below is my simple Task class
>
> class Task implements Callable {
>
> private final RestTemplate restTemplate;
> private final DataKey key;
>
> public Task(DataKey key, RestTemplate restTemplate) {
> this.key = key;
> this.restTemplate = restTemplate;
> }
>
> public String call() throws Exception {
> ResponseEntity response = null;
>
> String url = "some_url_created_by_using_key";
>
> // handling all try catch here
> response = restTemplate.exchange(url, HttpMethod.GET, null,
> String.class);
>
> return response.getBody();
> }
> }
>
> And here is netstat details on my box which is running my code to make HTTP
> Calls to my RestService. I am always seeing very high number of TIME_WAIT
> connections.
>
>  72 ESTABLISHED
>   2 FIN_WAIT1
>  17 LISTEN
>3405 TIME_WAIT
>



-- 
BEKK Open
http://open.bekk.no

TesTcl - a unit test framework for iRules
http://testcl.com


Re: What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-04 Thread Michael Osipov

Am 2015-06-04 um 17:51 schrieb Check Peck:

I am using Spring RestTemplate to make a HTTP Calls to my RestService. I am
using spring framework 3.1.1 version of RestTemplate. I cannot upgrade this
since that's what we are using in our company.

Now machine which is running my code (which uses RestTemplate) to make call
to my RestService, I see lot of TIME_WAIT connections opened on that
particular machine?

- Is there any reason why it happens with RestTemplate or the way I am
using it?
- Also, what is the connection between TIME_WAIT and HTTP Client calls to
my RestService? I am not able to understand this as well. Does HTTP Calls
has any significance on TIME_WAIT? There might be some theoretical
explanation for this I guess.
[...]
And here is netstat details on my box which is running my code to make HTTP
Calls to my RestService. I am always seeing very high number of TIME_WAIT
connections.

  72 ESTABLISHED
   2 FIN_WAIT1
  17 LISTEN
3405 TIME_WAIT



This is rather a TCP issue. As far as I can see, Spring Web 3.1.x uses 
version 4.1 of HttpClient [1] and this one is unsupported. I do not know 
wether 4.4 is ABI compatible with 4.1 but you should update the 
HttpClient in your POM and retry, maybe your problem will go away.


I have found a quite good explanation about the issue you are 
experiencing [2], [3], it might be worth to discuss this with your admins.



Michael

[1] 
https://github.com/spring-projects/spring-framework/blob/3.1.x/org.springframework.web/ivy.xml#L63

[2] http://superuser.com/a/173542/222550
[3] http://www4.cs.fau.de/Projects/JX/Projects/TCP/tcpstate.html

-
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org



What is the relation between TIME_WAIT and HTTP Client calls to a RestService?

2015-06-04 Thread Check Peck
I am using Spring RestTemplate to make a HTTP Calls to my RestService. I am
using spring framework 3.1.1 version of RestTemplate. I cannot upgrade this
since that's what we are using in our company.

Now machine which is running my code (which uses RestTemplate) to make call
to my RestService, I see lot of TIME_WAIT connections opened on that
particular machine?

- Is there any reason why it happens with RestTemplate or the way I am
using it?
- Also, what is the connection between TIME_WAIT and HTTP Client calls to
my RestService? I am not able to understand this as well. Does HTTP Calls
has any significance on TIME_WAIT? There might be some theoretical
explanation for this I guess.

Below is how I am using RestTemplate in my code base:

public class DataClient implements Client {

private final RestTemplate restTemplate = new RestTemplate();
private ExecutorService executor = Executors.newFixedThreadPool(10);

// for synchronous call
@Override
public String getSyncData(DataKey key) {
String response = null;
Future handler = null;
try {
handler = getAsyncData(key);
response = handler.get(key.getTimeout(),
TimeUnit.MILLISECONDS);
} catch (TimeoutException ex) {
// log an exception
handler.cancel(true);
} catch (Exception ex) {
// log an exception
}

return response;
}

// for asynchronous call
@Override
public Future getAsyncData(DataKey key) {
Future future = null;

try {
Task task = new Task(key, restTemplate);
future = executor.submit(task);
} catch (Exception ex) {
// log an exception
}

return future;
}
}

And below is my simple Task class

class Task implements Callable {

private final RestTemplate restTemplate;
private final DataKey key;

public Task(DataKey key, RestTemplate restTemplate) {
this.key = key;
this.restTemplate = restTemplate;
}

public String call() throws Exception {
ResponseEntity response = null;

String url = "some_url_created_by_using_key";

// handling all try catch here
response = restTemplate.exchange(url, HttpMethod.GET, null,
String.class);

return response.getBody();
}
}

And here is netstat details on my box which is running my code to make HTTP
Calls to my RestService. I am always seeing very high number of TIME_WAIT
connections.

 72 ESTABLISHED
  2 FIN_WAIT1
 17 LISTEN
   3405 TIME_WAIT