r2332 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Tue Jan 8 10:56:50 CET 2008


Author: phk
Date: 2008-01-08 10:56:50 +0100 (Tue, 08 Jan 2008)
New Revision: 2332

Modified:
   trunk/varnish-cache/bin/varnishd/varnishd.1
   trunk/varnish-cache/bin/varnishd/varnishd.c
Log:
Add -l argument for specifying shared memory log size.

Increase default from 8M to 80M to reduce roll-over frequency on busy servers.


Modified: trunk/varnish-cache/bin/varnishd/varnishd.1
===================================================================
--- trunk/varnish-cache/bin/varnishd/varnishd.1	2008-01-08 09:42:29 UTC (rev 2331)
+++ trunk/varnish-cache/bin/varnishd/varnishd.1	2008-01-08 09:56:50 UTC (rev 2332)
@@ -43,6 +43,7 @@
 .Op Fl f Ar config
 .Op Fl g Ar group
 .Op Fl h Ar type Ns Op , Ns Ar options
+.Op Fl l Ar shmlogsize
 .Op Fl n Ar name
 .Op Fl P Ar file
 .Op Fl p Ar param Ns = Ns Ar value
@@ -131,6 +132,11 @@
 See
 .Sx Hash Algorithms
 for a list of supported algorithms.
+.It Fl l Ar shmlogsize
+Specify size of shmlog file.
+Scaling suffixes like 'k', 'm' can be used up to (e)tabytes.
+Default is 80 Megabytes.
+Specifying less than 8 Megabytes is unwise.
 .It Fl n
 Specify a name for this instance.
 Amonst other things, this name is used to construct the name of the

Modified: trunk/varnish-cache/bin/varnishd/varnishd.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/varnishd.c	2008-01-08 09:42:29 UTC (rev 2331)
+++ trunk/varnish-cache/bin/varnishd/varnishd.c	2008-01-08 09:56:50 UTC (rev 2332)
@@ -124,57 +124,42 @@
 static void
 usage(void)
 {
+#define FMT "    %-28s # %s\n"
+
 	fprintf(stderr, "usage: varnishd [options]\n");
-	fprintf(stderr, "    %-28s # %s\n", "-a address:port",
-	    "HTTP listen address and port");
-	fprintf(stderr, "    %-28s # %s\n", "-b address:port",
-	    "backend address and port");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "   -b <hostname_or_IP>");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "   -b '<hostname_or_IP>:<port_or_service>'");
-	fprintf(stderr, "    %-28s # %s\n", "-d", "debug");
-	fprintf(stderr, "    %-28s # %s\n", "-f file", "VCL script");
-	fprintf(stderr, "    %-28s # %s\n", "-F", "Run in foreground");
-	fprintf(stderr, "    %-28s # %s\n",
-	    "-h kind[,hashoptions]", "Hash specification");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -h simple_list");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -h classic  [default]");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -h classic,<buckets>");
-	fprintf(stderr, "    %-28s # %s\n", "-n dir",
-	    "varnishd working directory");
-	fprintf(stderr, "    %-28s # %s\n", "-P file", "PID file");
-	fprintf(stderr, "    %-28s # %s\n", "-p param=value",
-	    "set parameter");
-	fprintf(stderr, "    %-28s # %s\n",
+	fprintf(stderr, FMT, "-a address:port", "HTTP listen address and port");
+	fprintf(stderr, FMT, "-b address:port", "backend address and port");
+	fprintf(stderr, FMT, "", "   -b <hostname_or_IP>");
+	fprintf(stderr, FMT, "", "   -b '<hostname_or_IP>:<port_or_service>'");
+	fprintf(stderr, FMT, "-d", "debug");
+	fprintf(stderr, FMT, "-f file", "VCL script");
+	fprintf(stderr, FMT, "-F", "Run in foreground");
+	fprintf(stderr, FMT, "-h kind[,hashoptions]", "Hash specification");
+	fprintf(stderr, FMT, "", "  -h simple_list");
+	fprintf(stderr, FMT, "", "  -h classic  [default]");
+	fprintf(stderr, FMT, "", "  -h classic,<buckets>");
+	fprintf(stderr, FMT, "-l bytesize", "Size of shared memory log");
+	fprintf(stderr, FMT, "-n dir", "varnishd working directory");
+	fprintf(stderr, FMT, "-P file", "PID file");
+	fprintf(stderr, FMT, "-p param=value", "set parameter");
+	fprintf(stderr, FMT,
 	    "-s kind[,storageoptions]", "Backend storage specification");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -s malloc");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -s file  [default: use /tmp]");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -s file,<dir_or_file>");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -s file,<dir_or_file>,<size>");
-	fprintf(stderr, "    %-28s # %s\n", "-t", "Default TTL");
-	fprintf(stderr, "    %-28s # %s\n", "-T address:port",
+	fprintf(stderr, FMT, "", "  -s malloc");
+	fprintf(stderr, FMT, "", "  -s file  [default: use /tmp]");
+	fprintf(stderr, FMT, "", "  -s file,<dir_or_file>");
+	fprintf(stderr, FMT, "", "  -s file,<dir_or_file>,<size>");
+	fprintf(stderr, FMT, "-t", "Default TTL");
+	fprintf(stderr, FMT, "-T address:port",
 	    "Telnet listen address and port");
-	fprintf(stderr, "    %-28s # %s\n", "-V", "version");
-	fprintf(stderr, "    %-28s # %s\n", "-w int[,int[,int]]",
-	    "Number of worker threads");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -w <fixed_count>");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -w min,max");
-	fprintf(stderr, "    %-28s # %s\n", "",
-	    "  -w min,max,timeout [default: -w1,1000,120]");
+	fprintf(stderr, FMT, "-V", "version");
+	fprintf(stderr, FMT, "-w int[,int[,int]]", "Number of worker threads");
+	fprintf(stderr, FMT, "", "  -w <fixed_count>");
+	fprintf(stderr, FMT, "", "  -w min,max");
+	fprintf(stderr, FMT, "", "  -w min,max,timeout [default: -w1,1000,120]");
+#undef FMT
 #if 0
 	-c clusterid at cluster_controller
 	-m memory_limit
-	-l logfile,logsize
 	-u uid
 	-a CLI_port
 #endif
@@ -372,6 +357,9 @@
 	unsigned F_flag = 0;
 	const char *b_arg = NULL;
 	const char *f_arg = NULL;
+	const char *l_arg = "80m";
+	uintmax_t l_size;
+	const char *q;
 	int f_fd = -1;
 	const char *h_arg = "classic";
 	const char *n_arg = NULL;
@@ -402,7 +390,7 @@
 	MCF_ParamInit(cli);
 	cli_check(cli);
 
-	while ((o = getopt(argc, argv, "a:b:Cdf:Fg:h:n:P:p:s:T:t:u:Vw:")) != -1)
+	while ((o = getopt(argc, argv, "a:b:Cdf:Fg:h:l:n:P:p:s:T:t:u:Vw:")) != -1)
 		switch (o) {
 		case 'a':
 			MCF_ParamSet(cli, "listen_address", optarg);
@@ -429,6 +417,9 @@
 		case 'h':
 			h_arg = optarg;
 			break;
+		case 'l':
+			l_arg = optarg;
+			break;
 		case 'n':
 			n_arg = optarg;
 			break;
@@ -475,6 +466,13 @@
 		usage();
 	}
 
+	q = str2bytes(l_arg, &l_size);
+	if (q != NULL) {
+		fprintf(stderr, "Parameter error:\n");
+		fprintf(stderr, "\t-l ...:  %s\n", q);
+		exit (1);
+	}
+
 	/* XXX: we can have multiple CLI actions above, is this enough ? */
 	if (cli[0].result != CLIS_OK) {
 		fprintf(stderr, "Parameter errors:\n");
@@ -542,7 +540,7 @@
 
 	setup_hash(h_arg);
 
-	VSL_MgtInit(SHMLOG_FILENAME, 8*1024*1024);
+	VSL_MgtInit(SHMLOG_FILENAME, l_size);
 
 	if (d_flag == 1)
 		DebugStunt();




More information about the varnish-commit mailing list