If neighbors don't support our private keys, then we can't use the
httpMaybeRemovePublic() function because ALL entries are public and
we end up removing our own.
From: Stewart Forster <slf@connect.com.au>
Another important patch for HIGH loads. Someone mentioned once when we were
designing the automatic comm_select_incoming counters tuning code that we
should try not to check too often. I argued against that and I was wrong.
At high loads, the sheer load of polling starts to bite badly, and so the
below patch reduces the amount of polling needed. Now squid slows down more
sanely at really high loads (rather than brick wall). Ideally these values
should be configurable and called:
but I don't have the time to write this up. These values will definately
vary from site to site depending on the ICP/HHTP load ratio. The above
values work okay for us, but maybe not for everyone.....
The lower the poll_cnts will mean the more rapid the polling.
The lower the incoming_*_average will mean the more rapid the polling.
The min_*_poll_cnt will put a maximum limit on the rate of polls.
It apparently was a BAD idea to have storeHashInsert() move PRIVATE
entries to the tail of the LRU list. Instead, lets try doing that
in storeUnlockObject when the lock count is zero.
rousskov [Fri, 28 Aug 1998 04:00:07 +0000 (04:00 +0000)]
- one IRIX an unsigned size_t creates problems when we do (len-1) in snprintf
fixed by cheking that len is positive before subtracting 1.
- return value was sometimes uninitialized when calling snprintf
wessels [Tue, 25 Aug 1998 03:11:30 +0000 (03:11 +0000)]
Do a better job of swapping out uncachable objects. We need to be
smarter about calculating the new inmem_lo value. Even though
the object may not be ENTRY_CACHABLE, we might be currently swapping it
out. We have some assertion failures when we free past the swapout_done
offset.
wessels [Fri, 21 Aug 1998 14:40:57 +0000 (14:40 +0000)]
Fixed up ugly confusion with public keys and RELEASE_REQUEST states.
Some other failed assertions led me to an object with a public cache
key, but which was not being swapped out because the proxy-only option
made us call storeReleaseRequest early (before reading any server reply).
RELEASE_REQUEST objects should never be given public keys.
storeReleaseRequest now clears the ENTRY cachable bit to help ensure
this doesn't happen.
wessels [Fri, 21 Aug 1998 04:21:02 +0000 (04:21 +0000)]
- Added httpMaybeRemovePublic() to purge public objects for
certain responses even though they are uncachable. This is
needed, for example, when an initially cachable object
later becomes uncachable.
wessels [Thu, 20 Aug 1998 05:10:30 +0000 (05:10 +0000)]
we have FMR bugs with peer *'s in ps_state structure. When a reconfigure
occurs during ICP queries, and we have a timeout, the ->first_parent_miss
peer will have been freed.
Using cbdata here would be too ugly. we would have a lot of locks and
unlocks, plus what to do when the first_parent_miss peer is not valid?
re-select?
This approach saves sockaddr_in values for the peers. We look up the
actual peer structure with whichPeer() when we really need the peers.
wessels [Thu, 20 Aug 1998 05:07:23 +0000 (05:07 +0000)]
move whitespace-skipping block inside the while loop below it so we skip
leading whitespace on following requests, and work around broken user
agents which send too many CRLF on a POST