mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-03 12:03:02 +00:00
[MINOR] read optimizations based on the MSS
Generally, if a recv() returns less bytes than the MSS, it means that there is nothing left in the system's buffers, and that it's not worth trying to read again because we are very likely to get nothing. A default read low limit has been set to 1460 bytes below which we stop reading. This has brought a little speed boost on small objects while maintaining the same speed on large objects.
This commit is contained in:
parent
b8949f1ed0
commit
9641e8f6ee
@ -64,6 +64,13 @@
|
||||
#define MAX_READ_POLL_LOOPS 4
|
||||
#endif
|
||||
|
||||
// the number of bytes returned by a read below which we will not try to
|
||||
// poll the socket again. Generally, return values below the MSS are worthless
|
||||
// to try again.
|
||||
#ifndef MIN_RET_FOR_READ_LOOP
|
||||
#define MIN_RET_FOR_READ_LOOP 1460
|
||||
#endif
|
||||
|
||||
// cookie delimitor in "prefix" mode. This character is inserted between the
|
||||
// persistence cookie and the original value. The '~' is allowed by RFC2965,
|
||||
// and should not be too common in server names.
|
||||
|
@ -95,6 +95,15 @@ int stream_sock_read(int fd) {
|
||||
}
|
||||
|
||||
b->total += ret;
|
||||
|
||||
/* generally if we read something smaller than the 1 or 2 MSS,
|
||||
* it means that it's not worth trying to read again.
|
||||
*/
|
||||
if (ret < MIN_RET_FOR_READ_LOOP)
|
||||
break;
|
||||
if (!read_poll)
|
||||
break;
|
||||
|
||||
/* we hope to read more data or to get a close on next round */
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user