]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
storeCheckCachable() returns 0 if http_median_svc_time exceeds 2 seconds
authorwessels <>
Thu, 3 Sep 1998 09:36:24 +0000 (09:36 +0000)
committerwessels <>
Thu, 3 Sep 1998 09:36:24 +0000 (09:36 +0000)
src/store.cc

index f199ff2359a39fe4c6604bb5328137a2ccabbb24..20020c31bff89d429f60ac05ace50bcc2cd8271d 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store.cc,v 1.451 1998/09/02 05:56:45 wessels Exp $
+ * $Id: store.cc,v 1.452 1998/09/03 03:36:24 wessels Exp $
  *
  * DEBUG: section 20    Storage Manager
  * AUTHOR: Harvest Derived
@@ -88,6 +88,7 @@ static FREE destroy_StoreEntry;
 static void storePurgeMem(StoreEntry *);
 static unsigned int getKeyCounter(method_t);
 static int storeKeepInMemory(const StoreEntry *);
+static OBJH storeCheckCachableStats;
 
 /*
  * local variables
@@ -446,31 +447,61 @@ storeAppendVPrintf(StoreEntry * e, const char *fmt, va_list vargs)
     storeAppend(e, buf, strlen(buf));
 }
 
+struct _store_check_cachable_hist {
+    struct {
+       int non_get;
+       int not_entry_cachable;
+       int release_request;
+       int wrong_content_length;
+       int negative_cached;
+       int too_big;
+       int private_key;
+       int http_median_too_high;
+       int lru_age_too_low;
+    } no;
+    struct {
+       int Default;
+    } yes;
+} store_check_cachable_hist;
+
 int
 storeCheckCachable(StoreEntry * e)
 {
 #if CACHE_ALL_METHODS
     if (e->mem_obj->method != METHOD_GET) {
        debug(20, 2) ("storeCheckCachable: NO: non-GET method\n");
+       store_check_cachable_hist.no.non_get++;
     } else
 #endif
     if (!EBIT_TEST(e->flag, ENTRY_CACHABLE)) {
        debug(20, 2) ("storeCheckCachable: NO: not cachable\n");
+       store_check_cachable_hist.no.not_entry_cachable++;
     } else if (EBIT_TEST(e->flag, RELEASE_REQUEST)) {
        debug(20, 2) ("storeCheckCachable: NO: release requested\n");
+       store_check_cachable_hist.no.release_request++;
     } else if (e->store_status == STORE_OK && EBIT_TEST(e->flag, ENTRY_BAD_LENGTH)) {
        debug(20, 2) ("storeCheckCachable: NO: wrong content-length\n");
+       store_check_cachable_hist.no.wrong_content_length++;
     } else if (EBIT_TEST(e->flag, ENTRY_NEGCACHED)) {
        debug(20, 3) ("storeCheckCachable: NO: negative cached\n");
+       store_check_cachable_hist.no.negative_cached++;
        return 0;               /* avoid release call below */
     } else if (e->mem_obj->inmem_hi > Config.Store.maxObjectSize) {
        debug(20, 2) ("storeCheckCachable: NO: too big\n");
+       store_check_cachable_hist.no.too_big++;
     } else if (EBIT_TEST(e->flag, KEY_PRIVATE)) {
        debug(20, 3) ("storeCheckCachable: NO: private key\n");
+       store_check_cachable_hist.no.private_key++;
+    } else if (statMedianSvc(5, MEDIAN_HTTP) > 2000.0) {
+       debug(20, 2) ("storeCheckCachable: NO: median HTTP svc time = %d\n",
+           statMedianSvc(5, MEDIAN_HTTP));
+       store_check_cachable_hist.no.http_median_too_high++;
     } else if (storeExpiredReferenceAge() < 300) {
        debug(20, 2) ("storeCheckCachable: NO: LRU Age = %d\n",
            storeExpiredReferenceAge());
+       store_check_cachable_hist.no.lru_age_too_low++;
     } else {
+       store_check_cachable_hist.yes.Default++;
        return 1;
     }
     storeReleaseRequest(e);
@@ -478,6 +509,31 @@ storeCheckCachable(StoreEntry * e)
     return 0;
 }
 
+static void
+storeCheckCachableStats(StoreEntry * sentry)
+{
+    storeAppendPrintf(sentry, "no.non_get\t%d\n",
+       store_check_cachable_hist.no.non_get);
+    storeAppendPrintf(sentry, "no.not_entry_cachable\t%d\n",
+       store_check_cachable_hist.no.not_entry_cachable);
+    storeAppendPrintf(sentry, "no.release_request\t%d\n",
+       store_check_cachable_hist.no.release_request);
+    storeAppendPrintf(sentry, "no.wrong_content_length\t%d\n",
+       store_check_cachable_hist.no.wrong_content_length);
+    storeAppendPrintf(sentry, "no.negative_cached\t%d\n",
+       store_check_cachable_hist.no.negative_cached);
+    storeAppendPrintf(sentry, "no.too_big\t%d\n",
+       store_check_cachable_hist.no.too_big);
+    storeAppendPrintf(sentry, "no.private_key\t%d\n",
+       store_check_cachable_hist.no.private_key);
+    storeAppendPrintf(sentry, "no.http_median_too_high\t%d\n",
+       store_check_cachable_hist.no.http_median_too_high);
+    storeAppendPrintf(sentry, "no.lru_age_too_low\t%d\n",
+       store_check_cachable_hist.no.lru_age_too_low);
+    storeAppendPrintf(sentry, "yes.default\t%d\n",
+       store_check_cachable_hist.yes.Default);
+}
+
 /* Complete transfer into the local cache.  */
 void
 storeComplete(StoreEntry * e)
@@ -834,6 +890,9 @@ storeInit(void)
     cachemgrRegister("storedir",
        "Store Directory Stats",
        storeDirStats, 0, 1);
+    cachemgrRegister("store_check_cachable_stats",
+       "storeCheckCachable() Stats",
+       storeCheckCachableStats, 0, 1);
 }
 
 void