Can a web service client control number of parallel connections? - concurrency

Is there any way by which the client machine or application settings restrict the number of connections it can open to a web service? So i have a .net application that spawns multiple threads and each thread creates new instance of the proxy to the web service XXX. On each thread i am calling SomeXXX method using the instantiated proxy. So if the service allows 100 connections and i am creating 100 threads is there any reason i should not see 100 established connections when i do netstat?
Regards

Ok,
So the setting in machine config restricts internet connection (http/https outside your machine) to 2 by default. Modify the System.Net section of machine config and it works great
<connectionManagement>
<add address="*" maxconnection="12"/>
</connectionManagement>
Regards

Related

Are there any known Linux inetd/"wait"-capable web servers with graceful idle shutdown?

I would like to start a web server on-demand as an inetd "tcp/wait" service which shuts itself down after a programmable period of inactivity.
Many web servers already support inetd "tcp/nowait" mode, but this mode has the disadvantage that a new process needs to be forked for every new connection. It is therefore slower and more resource-intensive than running a dedicated server daemon.
A web server supporting inetd's "tcp/wait" would only be launched by inetd for the first request, then serve any number of requests using the same server instance until no requests occurred for some period of idle time, in which case the server instance automatically terminates and lets inetd start it again once the next period of activity starts.
Such a tcp/wait inetd web server should have approximately the same efficiency as a dedicated web server (i. e. running permanently) during times of activity. However, it will automatically shut down in times of inactivity, saving system resources.
Irregular "anti-demand"-driven shutdowns will also clean up any memory leaks from the web server and possibly associated FGCI-services (which would terminate together with the web server).
I know that it is already possible to use systemd's socket activation in combination with lighttpd's -i option to implement what I want.
However, I want a solution that also works without systemd, depending on nothing else than a running Internet superserver no matter how the latter one has been started (inetd/xinetd started by sysvinit, runit, manually, or systemd's socket activation replacing inetd/xinetd).

HTTP connection pool (over Metro JAX-WS 2.3)

I am writing a Web Service client using JAX-WS with Metro 2.3 RI.
My application is Multi Threaded and supposed to endure an heavy load there for I keep the Service (Thread Safe) as a static member and use an Object Pool for the Port objects.
The problem is that whenever I attempt to invoke the externalized web service method, a new connection is being created instead of reuse the active one.
Note that the connection stays established for 10 seconds.
I made sure to use the following VM arguments (-Djava.endorsed.dirs=endorsed -Dhttp.keepAlive=true -Dhttp.maxConnections=20) and verified that the keep alive header is being set as part of the HTTP Request.
I am putting in the endorsed folder all the Metro 2.3 jars (webservices-api.jar, webservices-extra.jar, webservices-extra-api.jar, webservices-rt.jar, webservices-tools.jar) and doing that in order to insure that I operate with the 2.3 version and not with what comes in the JDK. (I am using JDK1.7.0_51 and JRE1.7)
What else should I be doing in order to be able to work with HTTP connection pool (over Metro JAX-WS 2.3)?
Thanks
Uri

How to limit simultaneous request from a single client?

We provide couple of SOAP web service.
Yesterday our service was down, we couldn't access to the service from the outside (can't even load the wsdl), but we could access to the service if we were connected with terminal service on the server.
The thing is one of our partner was calling our web service with 130 simultaneous threads.
So I think the service was down because this partner was occupying all the available connection. And this limitation is done by .net because I can easily read static file (txt) on my server from the outside, and the service accept the connection if it's from the local IP.
Here is my question : how can I limit the simultaneous connection count for one client ? I know I can do it for every one in IIS Manager, I can do it for outgoing request (connectionmanagement configuration). But I can't find it for incoming request.
It's strange because I think it's one of the first thing I'd set to prevent DOS attack.
(.net 3.5 , IIS 6)

How to communicate between service controller and a service/daemon?

It is easy to display the status of a Windows service or to control it (start/stop) from a GUI application but the question if how about receiving/sending notifications from the service? Like: service telling to the user monitoring it that it needs attention.
Please consider that you can have several controllers started at any time in a multi-user environment.
Do you know an example(open source) for this kind of communication?
Extra points for a platform independent solution :)
If the "user" monitoring the service is a person, how about writing to an event log and then having your enterprise event monitoring system send alerts. Alternatively, have the service log the issue to the event log and then send an email.
If the "user" or client of the service is a separate or multiple applications here are a couple thoughts without fully understadning your problem.
Write to file. Have the client tell the service what file or some agreed token to create a file for that particular client instance and then have the service write to the file. The client can then monitor the file.
Status Ping. Have the client ping the service on a regular basis in a background thread to ask the service how it is doing. If unhealthy, then the client could ping the service for more information. Kind of like getting the LastMessage.
Open Sockets or End Point. Find a way to setup communication back from the service so that the service can call the client. This may be initiated by the client first telling the service where it is so it can call back. I forget the specifics, but WCF should be able to handle this out of the box for you. If you want something more generic you may need to roll your own.
Hope these ideas help.
As an option, use our MsgConnect (free with source) to send messages between services and controllers (crossplatform). Communication between services and controllers is possible both locally (via MMF or socket transport) and remotely (via socket transport).

Time Syncronization via Web Service Call

Say are dealing with a Windows network that for internet access must pass through a firewall that you have no control over. Said firewall apparently blocks the known time protocols (NTP,daytime,etc) and you know from experience that those who control
it will not allow any exceptions.
Is it possible to sync this "Windows" (could be linux) computer via a web service call which grabs the time from a server out on the internet?
Is there another reliable method for updating time on the server, like pulling from a website and passing it to the ntp client?
HTTP Time Protocol:
http://www.vervest.org/fiki/bin/view/HTP/WebHome
It takes the date from the http server itself, not from a website served by it