remm 2005/05/26 02:06:16
Modified: util/java/org/apache/tomcat/util/net AprEndpoint.java
http11/src/java/org/apache/coyote/http11
Http11AprProcessor.java
Log:
- Allow using a firstRead value <= 0 to specify to always use the poller for
keepalive. The first request processed by the processor will always wait a
little before going back to the poller.
- Also use 5ms instead of 100ms for pollTime (it doesn't seem to have any
performance impact, or it's just that my computer is fast). 1ms does have a
(very small) performance impact, however.
Revision Changes Path
1.31 +1 -1
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/AprEndpoint.java
Index: AprEndpoint.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/AprEndpoint.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- AprEndpoint.java 23 May 2005 06:04:02 -0000 1.30
+++ AprEndpoint.java 26 May 2005 09:06:16 -0000 1.31
@@ -255,7 +255,7 @@
* Poll interval, in microseconds. The smaller the value, the more CPU
the poller
* will use, but the more responsive to activity it will be.
*/
- protected int pollTime = 100000;
+ protected int pollTime = 5000;
public int getPollTime() { return pollTime; }
public void setPollTime(int pollTime) { this.pollTime = pollTime; }
1.14 +12 -4
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
Index: Http11AprProcessor.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Http11AprProcessor.java 25 May 2005 12:45:38 -0000 1.13
+++ Http11AprProcessor.java 26 May 2005 09:06:16 -0000 1.14
@@ -77,8 +77,12 @@
this.endpoint = endpoint;
request = new Request();
- inputBuffer = new InternalAprInputBuffer(request, headerBufferSize,
- endpoint.getFirstReadTimeout());
+ int readTimeout = endpoint.getFirstReadTimeout();
+ if (readTimeout <= 0) {
+ readTimeout = 100;
+ }
+ inputBuffer = new InternalAprInputBuffer(request, headerBufferSize,
+ readTimeout);
request.setInputBuffer(inputBuffer);
response = new Response();
@@ -752,7 +756,10 @@
int keepAliveLeft = maxKeepAliveRequests;
long soTimeout = endpoint.getSoTimeout();
- int limit = (endpoint.getMaxThreads() * 3) / 4;
+ int limit = 0;
+ if (endpoint.getFirstReadTimeout() > 0) {
+ limit = (endpoint.getMaxThreads() * 3) / 4;
+ }
boolean keptAlive = false;
boolean openSocket = false;
@@ -764,7 +771,8 @@
if( !disableUploadTimeout && keptAlive && soTimeout > 0 ) {
Socket.timeoutSet(socket, soTimeout * 1000);
}
- if
(!inputBuffer.parseRequestLine(endpoint.getCurrentThreadsBusy() > limit)) {
+ if (!inputBuffer.parseRequestLine
+ (keptAlive && (endpoint.getCurrentThreadsBusy() >
limit))) {
// This means that no data is available right now
// (long keepalive), so that the processor should be
recycled
// and the method should return true
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]