• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 461
  • Last Modified:

Several simultaneous URLConnections to a single server

I have a java application using Sun's JDK 1.4 which opens
several URLConnections to our server.  Some of these take
the server a long time to generate a response, and sometimes
the client has several that occur at the same time.

It appears that java does not allow them to all happen in parallel.
Perhaps java may be trying to reuse the same socket connection
for processing each http request in serial.  With some of my slow
responses, however, this default limitation on parallel URLConnections
is really making things unacceptably slow.

Is there any way I can change the configuration so that there is
1. No small limit to the number of simultaneous connections
2. Even if some of the responses are slow, the other responses don't
    have to wait.

Thanks a lot
0
bjornsone
Asked:
bjornsone
  • 5
  • 3
  • 2
  • +1
2 Solutions
 
CEHJCommented:
You're presumably handling them in separate threads? If not, that's what you should do
0
 
ggalvaoCommented:
Make your URLConnection class implement Thread interface then use methods .start() to dispatch the connection code.
0
 
bjornsoneAuthor Commented:
Yes, I am using separate threads, but java somewhere at a lower
level has restrictions on how it handles multiple URLConnections to
the same server.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
CEHJCommented:
>>
but java somewhere at a lower
level has restrictions on how it handles multiple URLConnections to
the same server.
>>

What's your OS and how many open connections have you got?

0
 
bjornsoneAuthor Commented:
It runs on windows 2000 and windows xp
I can't set an absolute maximum that our application
may be using at once, but it should typically not
exceed 5.
0
 
CEHJCommented:
>>I can't set an absolute maximum that our application may be using at once

You certainly can set a maximum number of threads and should. 5 would be absolutely fine. You should probably set a timeout and an exception will be thrown, allowing the thread to exit
0
 
JugglerWCommented:
If you use a standard internet browser to access your server (assuming it's a http server) is this also slow?

My quick thoughts:

- You can set the Java property http.maxConnections to a larger value, but default should be already 5 as default

- You can set the Java property http.keepAlive to true (but default should be already true).

- Sometimes the http server restricts the number of parallel connections from one client / IP.

- be sure HTTP/1.1 with keep alive is used by your server. To test open a normal socket to your server and send a request like:

HEAD / HTTP/1.1\r\n
HOST: <your host>\r\n
\r\n
\r\n

Now read and print out the input stream until you get an empty line. The header fields recieved may give you some insight on your server.
You may also use this approach to test how many parallel connections your server can handle if you start it n times in parallel threads.

For an exact description of HTTP protocol see: http://www.w3.org/Protocols/rfc2616/rfc2616.html


0
 
JugglerWCommented:
Clarification:

In

HOST: <your host>\r\n

<your host> means the name of your server like www.microsoft.com
0
 
bjornsoneAuthor Commented:
Thanks alot
0
 
CEHJCommented:
8-)
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 5
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now