Justin Clark-Casey (justincc)
7cab41f422
refactor: replace verbose checks with String.IsNullOrEmpty where applicable.
...
Thanks to Kira for this patch from http://opensimulator.org/mantis/view.php?id=6845
2013-11-15 21:45:08 +00:00
teravus
75f63ecfcd
* Add a session concurrency option per key. Allows developer/config to specify number of concurrent requests on a service.
2013-10-09 22:21:25 -05:00
teravus
1df58d04b1
* Move the BasicDOSProtector.cs to OpenSim.Framework (all useful classes belong there.....)
...
* Add an IsBlocked(string Key) method so it can be used more generically. (think.. if we want to rate limit login failures, we could have a call in the Login Service to IsBlocked(uuid.ToString()) and ignore the connection if it returns true, if IsBlocked returns false, we could run the login information and if the login fails we could run the Process method to count the login failures.
2013-10-07 23:48:24 -05:00
teravus
75fdd6054d
* Refactor
...
* Break out common BasicDOSProtector code into separate class.
2013-10-07 23:19:50 -05:00
teravus
f76cc6036e
* Added a Basic DOS protection container/base object for the most common HTTP Server handlers. XMLRPC Handler, GenericHttpHandler and <Various>StreamHandler
...
* Applied the XmlRpcBasicDOSProtector.cs to the login service as both an example, and good practice.
* Applied the BaseStreamHandlerBasicDOSProtector.cs to the friends service as an example of the DOS Protector on StreamHandlers
* Added CircularBuffer, used for CPU and Memory friendly rate monitoring.
* DosProtector has 2 states, 1. Just Check for blocked users and check general velocity, 2. Track velocity per user, It only jumps to 2 if it's getting a lot of requests, and state 1 is about as resource friendly as if it wasn't even there.
2013-10-07 21:35:55 -05:00
teravus
85593d8d25
* Add an initial complete frame timeout to the WebSocket processor to make it easier to write WebSocket service code that is resistant to Denial of Service attacks.
2013-10-04 20:37:59 -05:00
Justin Clark-Casey (justincc)
42bdf44658
Bump OPenSimulator version and assembly versions up to 0.8.0 Dev
2013-10-04 23:33:47 +01:00
Aleric Inglewood
7889e7757a
Don't use 'Indented' formatting for RpcXml responses.
...
(cherry picked from commit 93abcde69043b175071e0bb752538d9730433f1d)
2013-09-22 21:10:01 -05:00
Justin Clark-Casey (justincc)
77d418a36d
remove mono compiler warnings from PollServiceRequestManager
2013-08-17 00:56:19 +01:00
Justin Clark-Casey (justincc)
ac198068ab
Add "debug threadpool status" console command to show min/max/current worker/iocp threadpool numbers
2013-08-06 00:00:12 +01:00
Justin Clark-Casey (justincc)
4581bdd929
Add "debug comms status" command to show current debug comms settings
2013-08-05 23:49:33 +01:00
Justin Clark-Casey (justincc)
9bcf072795
Make it possible to switch whether we serialize osd requests per endpoint or not, either via config (SerializeOSDRequests in [Network]) or via the "debug comms set" console command.
...
For debug purposes to assess what impact this has on network response in a heavy test environment.
2013-08-05 23:44:48 +01:00
Justin Clark-Casey (justincc)
139dcf1246
minor: move "threads abort" and "force gc" console commands into debug category - these are not things one needs to do in normal operation
2013-08-05 23:06:17 +01:00
Justin Clark-Casey (justincc)
160659f683
Make it possible to set worker/iocp min/max threadpool limits on the fly with the console command "debug threadpool set"
2013-08-05 23:04:36 +01:00
Justin Clark-Casey (justincc)
76bd3de2fd
Add checks monitoring framework to provide alerts if certain conditions do not hold.
...
Not yet in use.
2013-08-05 19:22:47 +01:00
Diva Canto
3dac92f345
Increased the rate of the PollServiceRequestManager to 0.5 secs (it was 1sec). Group chat is going over the EQ... Hopefully this won't increase CPU when there's nothing going on, but we need to watch for that.
2013-07-26 21:40:04 -07:00
Justin Clark-Casey (justincc)
056a6ee765
Fix regression tests relating to agent transfer by making simulator use last week's SIMULATOR/0.1 protocol for now.
2013-07-26 19:22:30 +01:00
Diva Canto
18d5d8f5dd
Removed verbose debug from previous commit
2013-07-21 09:00:08 -07:00
Diva Canto
edafea6ae6
PollServiceRequestManager: changed the long poll from a Queue to a List. No need to dequeue and enqueue items every 1sec.
2013-07-21 08:59:48 -07:00
Diva Canto
98d47ea428
Delay the enqueueing of non-longpoll requests for 100ms. No need to have these requests actively on the processing queue if it seems they're not ready.
2013-07-21 08:57:16 -07:00
Diva Canto
b5062ae7ee
Changed the timoeut of EQ 502s (no events) to 50 secs. The viewer post requests timeout in 60 secs.
...
There's plenty of room for improvement in handling the EQs. Some other time...
2013-07-18 13:30:04 -07:00
Diva Canto
552b85d33d
Revert "Revert "Putting the requests back in the queue while testing for count >0 is not the smartest move...""
...
This reverts commit 7127891957 .
2013-07-18 12:25:04 -07:00
Diva Canto
9e35b069a4
Reverting the reverts I did yesterday. cpu-branch has now been
...
successfully tested, and I'm merging back those changes, which proved to
be good.
Revert "Revert "Cleared up much confusion in PollServiceRequestManager. Here's the history:""
This reverts commit fa2370b32e .
2013-07-18 12:23:27 -07:00
Diva Canto
fa2370b32e
Revert "Cleared up much confusion in PollServiceRequestManager. Here's the history:"
...
This reverts commit e46459ef21 .
2013-07-17 15:05:36 -07:00
Diva Canto
7127891957
Revert "Putting the requests back in the queue while testing for count >0 is not the smartest move..."
...
This reverts commit f4317dc26d .
2013-07-17 15:04:27 -07:00
Diva Canto
519dba9a69
Revert "Now trying DoubleQueue instead of BlockingQueue for the PollServiceRequestManager."
...
This reverts commit 5f95f4d78e .
2013-07-17 15:03:16 -07:00
Diva Canto
5c54eb30ed
Revert "This is a completely unreasonable thing to do, effectively defying the purpose of BlockingQueues. Trying this, to see the effect on CPU."
...
This reverts commit 5232ab0496 .
2013-07-17 15:02:54 -07:00
Diva Canto
5232ab0496
This is a completely unreasonable thing to do, effectively defying the purpose of BlockingQueues. Trying this, to see the effect on CPU.
2013-07-17 14:36:55 -07:00
Diva Canto
5f95f4d78e
Now trying DoubleQueue instead of BlockingQueue for the PollServiceRequestManager.
2013-07-17 14:09:04 -07:00
Diva Canto
f4317dc26d
Putting the requests back in the queue while testing for count >0 is not the smartest move...
2013-07-17 12:57:34 -07:00
Diva Canto
e46459ef21
Cleared up much confusion in PollServiceRequestManager. Here's the history:
...
When Melanie added the web fetch inventory throttle to core, she made the long poll requests (EQs) effectively be handled on an active loop. All those requests, if they existed, were being constantly dequeued, checked for events (which most often they didn't have), and requeued again. This was an active loop thread on a 100ms cycle!
This fixes the issue. Now the inventory requests, if they aren't ready to be served, are placed directly back in the queue, but the long poll requests aren't placed there until there are events ready to be sent or timeout has been reached.
This puts the LongPollServiceWatcherThread back to 1sec cycle, as it was before.
2013-07-17 11:19:36 -07:00
Justin Clark-Casey (justincc)
1b7b664c86
Add request received/handling stats for caps which are served by http poll handlers.
...
This adds explicit cap poll handler supporting to the Caps classes rather than relying on callers to do the complicated coding.
Other refactoring was required to get logic into the right places to support this.
2013-07-15 23:27:46 +01:00
Justin Clark-Casey (justincc)
2025dd25f6
Add missing file BaseOutputStreamHandler.cs from recent commit e19defd
2013-07-08 23:50:40 +01:00
Justin Clark-Casey (justincc)
dc54581700
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
2013-07-08 22:19:37 +01:00
Diva Canto
b2d4b8b1da
BaseHttpServer: if the handler sets the content length, don't override it. This happens in HEAD handlers.
2013-07-08 14:12:11 -07:00
Justin Clark-Casey (justincc)
e19defde36
Add "show caps stats by user" and "show caps stats by cap" console commands to print various counts of capability invocation by user and by cap
...
This currently prints caps requests received and handled, so that overload of received compared to handled or deadlock can be detected.
This involves making BaseStreamHandler and BaseOutputStream record the ints, which means inheritors should subclass ProcessRequest() instead of Handle()
However, existing inheriting classes overriding Handle() will still work, albeit without stats recording.
"show caps" becomes "show caps list" to disambiguate between show caps commands
2013-07-08 22:03:07 +01:00
Justin Clark-Casey (justincc)
a33b6eed6d
minor: remove mono compiler warnings in WebsocketServerHandler.cs
2013-06-20 00:54:19 +01:00
Justin Clark-Casey (justincc)
84af1cab9b
Display existing statistic of how many http requests a server is making as server.network.HTTPRequestsMade in "show stats all"
2013-06-19 20:48:12 +01:00
Justin Clark-Casey (justincc)
9501a583cb
Make number of inbound http requests handled available as a httpserver.<port>.IncomingHTTPRequestsProcessed stat
2013-06-18 23:07:18 +01:00
Justin Clark-Casey (justincc)
b7c9dee033
refactor: Move existing code to generate report information on the threadpool to the ServerBase rather than being in Util
2013-06-17 23:57:10 +01:00
Justin Clark-Casey (justincc)
0d2fd0d914
Make general server stats available on the robust console as well as the simulator console
...
This means the "show stats" command is now active on the robust console.
2013-06-17 22:39:00 +01:00
Justin Clark-Casey (justincc)
47b6e78790
Implement logging of first 80 characters (debug level 5) or full body data (debug level 6) on outgoing requests, depending on debug level
...
This is set via "debug http out <level>"
This matches the existing debug level behaviours for logging incoming http data
2013-06-12 21:34:20 +01:00
Justin Clark-Casey (justincc)
7af97f88b7
Add port numbers to poll service thread names so that we can tell which belong to which HttpServer
2013-06-10 23:39:17 +01:00
Justin Clark-Casey (justincc)
32d1e50565
Reinstate explicit starting and stopping of PollServiceRequestManager added in 3eee991 but removed in 7c0bfca
...
Do not rely on destructors to stop things.
These fire at unpredictable times and cause problems such as http://opensimulator.org/mantis/view.php?id=6503
and most probably http://opensimulator.org/mantis/view.php?id=6668
2013-06-10 23:30:35 +01:00
Melanie
75631e0267
Supply proper type information for the various types of requests
2013-06-07 23:55:03 +01:00
Melanie
7c0bfca7a0
Adding Avination's PollService to round out the HTTP inventory changes
2013-06-07 23:43:45 +01:00
Justin Clark-Casey (justincc)
8e04c752fc
If OpenSimulator is writing a PID file and finds the file already present on startup, logging an error since this is commonly due to an unclean shutdown.
...
Unclean shutdown can cause constantly moving objects to disappear if an OAR has just been loaded and they have not reached persistence time threshold, among other problems.
2013-04-09 22:38:47 +01:00
teravus
d2367968e4
* In between the fog, a moment of clarity. This fixes mantis 6570
2013-04-04 19:10:23 -04:00
teravus
6e1b3f9951
*Yet another HTTPServer update code changes in OpenSim Libs. * This fixes a connection close issue by getting rid of the socket references * This adds a connection timeout checker to shutdown poor or evil connections and combats DOS attempts that just connect and make no complete requests and just wait. It also actually implements KeepAlive... instead of just understanding the connection header in the request... you can test by connecting and requesting a keepalive header and sending another request on the same connection. The new timeout checker closes expired keepalive sessions, just make sure you send the request within 70 seconds of connecting or the timeout checker will timeout the connection.
2013-03-16 03:14:11 -04:00
Justin Clark-Casey (justincc)
12900ea84e
Log same environment information to Robust log as is already done for simulator logs, for debug purposes
2013-03-14 23:39:15 +00:00