Hey Lapo,
We've been having some inconsistant readings between the sfs admin tool and our server's diagnostic tools. Currently we run 4 processors and the server's diagnostic tools are showing that the JRE is using the majority of our processing power. I do not have access to view these stats so I can't get you exact numbers. However, in the sfs admin tool the processor usage stays consistantly at 0-1%, occasionally bumping up to 2-3%. Is there any reason for this discrepancy?
Also, recently the sfs service has stopped responding to client connections during certain periods. This is a rare occurance and happens even when the traffic is low, but when it happens nobody can connect to the server until I restart it. When I do a status on the linux console I can see that the service is running and the extensions still respond to commands. Any idea on how this could happen?
Thanks,
Blank_101
Processor Load and Multiple Processors
The Admin tool Load numbers don't show processor usage, they show the internal load of the server. How much busy the server is at doing things.However, in the sfs admin tool the processor usage stays consistantly at 0-1%, occasionally bumping up to 2-3%. Is there any reason for this discrepancy?
Together with the queues info this gives you a rough idea of what the server is doing, and if it's getting very busy the queue stats will tell you where the load is
You should check which changes were done recently to your extension and see if there's something that could make the server very busy or create race conditions between threads ( if I remember well you've been adding a lot of additional threads lately)Also, recently the sfs service has stopped responding to client connections during certain periods. This is a rare occurance and happens even when the traffic is low,
That's the thing. The only queue we've been having trouble with is the extension handler queue, but when it peaks at 8K the server load still stays less than 3%. Shouldn't the server be working to read in the messages as fast as possible so pile ups don't happen? It just seems to me that whenever there is a pile up of any amount the processor usage should go to almost 100% until it's gone.The Admin tool Load numbers don't show processor usage, they show the internal load of the server. How much busy the server is at doing things.
Together with the queues info this gives you a rough idea of what the server is doing, and if it's getting very busy the queue stats will tell you where the load is
How does the processor usage displayed in the admin tool get its numbers?
Will do and get back to you. However, it seems to me that the problem is elsewhere considering the server still functions. It just doesn't allow for connections.You should check which changes were done recently to your extension and see if there's something that could make the server very busy or create race conditions between threads ( if I remember well you've been adding a lot of additional threads lately)
The extension handler queue does not affect the load because we can't predict what's going on in the custom developed code.That's the thing. The only queue we've been having trouble with is the extension handler queue, but when it peaks at 8K the server load still stays less than 3%. Shouldn't the server be working to read in the messages as fast as possible so pile ups don't happen? It just seems to me that whenever there is a pile up of any amount the processor usage should go to almost 100% until it's gone.
The ExtensionHandler thread process each request as fast as possible but if you have operations that take up much time the thread will spend a lot of time waiting/working while more messages pile up.
There are various solutions to this, we usually recommend using a custom thread pool, instead of augmenting the number of threads in the ExtensionHandler.
In the end it's the same thing but if the developer implements it's own Thread Pool (for example using the Java 5 Executors) he's also more aware of the synchronization problems that he should deal with
It depends on the operation, if it's a database query or a remote call the thread will spend a lot of time idle so you don't see the cpu going up.It just seems to me that whenever there is a pile up of any amount the processor usage should go to almost 100% until it's gone.