SPEC logo

SPECweb99 Support FAQ

Last Updated: October 24, 2003

The following two simple steps can answer 90% of SPECweb99 technical support questions:
  1. Read the User's Guide.
  2. Read the error messages provided by manager and act on the suggestions provided.
Q1: Is SPECweb99 easy for a novice to install and run?

A1: No. SPEC provides the tools to benchmark your web server. These tools require a medium amount of expertise in network and software setup, as one would expect of a client-server test setup. Web server setup difficulty ranges from medium to high. If you are not familiar with configuring a web server's directories, enabling the execution of Perl scripts, or making simple changes to Perl scripts, you may not have the expertise required to run this benchmark.

Client Setup and Execution

Q2: What is the best installation method for Red Hat Linux 6.x?

A2: Don't run the java setup program. Run the install.sh program from the CD and select the redhat-x86 choice.

Q3: I compiled the SPECweb99 client on Solaris for x86 and it does not appear to work. It is stuck in an infinite loop, generating the following messages in the client log file when run with "client -D 511":
	Thu May 4 17:50:41 2000 Empty Deck
	Thu May 4 17:50:41 2000 Generating Deck
	Thu May 4 17:50:41 2000 Randomizing Deck
	Thu May 4 17:50:41 2000 Empty Deck [ . . . ]
A3: This is a known problem with the SPECweb99 client on Solaris/x86. So far there is no solution.

Q4:The client gets the error message "Can't allocate shared memory" when a run starts?

A4: Try running the client with more shared memory, as in "client -m 20000000".

Q5: (NT) When I run the client from a command prompt, manager gets the error "Can't open socket to 'client_x'" and quits.

A5: You must run "client -Z" from the command prompt.

Q6: I am running Linux clients and after a run, manager reports "Iteration N: [clientname] reported X Kbps, actual bitrate Y Kbps".

A6: First, make sure you have updated to version 1.02. Then, perform the following steps on each client from the root of the SPECweb99 tree:
Restart your clients, and rerun the benchmark, and you should no longer see these errors

Q7: I'm seeing errors in each class after a run, and the client logs show "HTTPGetReply: Ad_id in found_cookie not in range: got -1 expected between 0..360".

A7: This problem can be avoided by ensuring SIMULTANEOUS_CONNECTIONS is evenly divisible by the sum of the clients multiplied by their weights. Try incrementally increasing the SIMULTANEOUS_CONNECTIONS value by 1 in your rc file until the error goes away.

Problems Running Manager

Q8: (NT) I get the following error message when I run "specperl manager":
	"Can't locate WebClient.pm in @INC 
	(@INC contains: C:\SPECweb99\bin C:\SPECweb99\bin\lib/MSWin32-x86 
	C:\SPECweb99\bin\lib C:\SPECweb99\bin\lib\site .) at ..\manager line 107.
	BEGIN failed--compilation aborted at ..\manager line 107."

A8: You must run shrc.bat from the base installation directory before running manager.

Q9: (Unix) I get the following error messages when I run "specperl manager":
	"Can't locate Getopt/Std.pm in @INC (@INC contains: < . . . > .) at manager line 114.
	BEGIN failed--compilation aborted at manager line 114."

A9: You haven't sourced the shrc script properly. Depending on the shell you are using, you may need to type ". ./shrc" or "source ./shrc" or some other command.

Q10: Why does iteration 1 fail immediately with "Can't reset POST log on server, ...", yet all the pre-run manager tests pass?

A10: Check to make sure your SIMULTANEOUS_CONNECTIONS value is greater than or equal to the number of clients in use.

Server Setup with specweb99-cgi.pl

Q11: Why aren't complete setup instructions included for my web server and OS?

A11: Because there are a nearly infinite number of combinations. SPECweb99 is a cross-platform, cross-OS test, and there is no way for SPEC to provide specific instructions for every possible combination. Generic instructions are available in the User's Guide, section 2.3.

Q12: How do I get Perl scripts to run with Microsoft's IIS?

A12: The easiest way is to install ActivePerl from www.activestate.com on the server. Add "Perl for ISAPI" support for better performance.

Q13: CAD GETs fail, and when I look at dyncadget.out or try one manually, I get the source code of specweb99-cgi.pl.

A13: Your web server is not set up correctly to execute .pl scripts. Check your web server documentation.

Q14: Why do I get the following error from manager during the dynamic POST check?
	Checking dynamic POST with

	**ERROR**:  Improper file returned.  See dynpost.out for returned text
	**ERROR**:  There should only be 1 post log entry;0 were found
                NOTE:  errors in dynamic POST may be caused by problems in
		command/Reset.  Check that the post.log gets zeroed correctly
From dynpost.out, the error message from the cgi (which depends on your cgi or course) said it was called with no parameters.

A14: Some web servers require the Content-type to be set for POSTs. Try adding the following line to manager; for SPECweb99 version 1.02, it should be added after line 1738:
$req->header('Content-type' => 'application/x-www-form-urlencoded');
The updated block of code should now read:
    if ($operation =~ m/POST/i) {
        $req = new HTTP::Request 'POST' => $url . "f";
        $req->header('Content-type' => 'application/x-www-form-urlencoded');
        my($urlroot) = ($url =~ m#\?(.*file_set/)#);
Note, the client code already includes the Content-type for POSTs.

Q15: Why do I get errors in the POST validation running Netscape Enterprise Server?

A15: There appears to be a bug in Netscape Enterprise Server where it does not pass the POST data to stdin of the Perl cgi script correctly.

Q16: CAD GETs fail on Apache with mod_perl using the supplied specweb99-cgi.pl with the error "ERROR: seek failed in /usr/local/httpd/htdocs/User.Personality: Invalid argument" in dyncadget.out.

A16: specweb99-cgi.pl does not appear to work correctly with mod_perl. Reconfigure Apache to not use mod_perl for your SPECweb99 dynamic content.

Q17: CAD GETs fail on Apache with error 500. Apache's error log says "Premature end of script headers: /home/httpd/html/spec/cgi-bin/specweb99-cgi.pl"

A17: Make sure there are no DOS CR/LF's in specweb99-cgi.pl, and that the first line of specweb99-cgi.pl points to the location of the perl executable on your server.

Q18: I get the error "Can't find top of document tree, please configure value CGI script manually". What do I do?

A18: Some web servers do not pass DOCUMENT_ROOT or PATH_TRANSLATED to CGI scripts correctly. In this case the only solution is to manually edit specweb99-cgi.pl and change $topdir to point to your document root.

Q19: I get the following errors in checking the dynamic CAD GET:
	Checking dynamic custom ad (CAD) GET with
	**ERROR**: Improper file returned. See dyncadget.out for returned text
	**ERROR**: No Custom Ad substitution was found -- see runrules for information 
	on the WEB99CAD string substitution
	NOTE: errors in Custom Ad Rotation may be caused by problems in command/Reset.
Check that upfgen and cadgen get run correctly

A19: Check the output of the reset command in dynreset.out. Chances are that upfgen99 or cadgen99 did not run correctly to generate User.Personality and Custom.Ads files. In your document root do you have files called User.Personality and Custom.Ads? If not, do you have the executables called upfgen99 and cadgen99 in the right place for the web server to execute them? Do cmd1 and cmd2 in dynreset.out work if you run them from the command line? Check the source of specweb99-cgi.pl and see if the path info to these two executables needs to be updated.

General Support Questions

Q20: Why can't I get more than x simultaneous connections on my server? The results pages show much higher results for the same server.

A20: If you are running the Perl cgi, that is one explanation. All of the submitted results use compiled API implementations for the dynamic content, which are orders of magnitude faster than an interpreted Perl script. Your network bandwidth may also be a limitation - see the next question.

If running the Perl cgi is the bottleneck, then you can check the published SPECweb99 results and see if anyone has used the same webserver software that you are using. If so, you may be able to use one of the API implementations that have been submitted to SPEC. See the SPECweb99 Dynamic API Sources at http://www.spec.org/web99/results/api-src/. Alternately, you may wish to implement the dynamic content using your API of choice following the implementation as defined in the detailed pseudo code that appears in the Run and Reporting Rules.

Q21: Why can't I get more than 250 simultaneous connections from my server running SPECweb99?

A21: If you have only 1 100Mbit connection to the server, you are bandwidth-limited at between 200 and 250 simultaneous connections. You will need to add more network cards or go to a higher-bandwidth connection such as gigabit Ethernet.

Q22: How many clients should I set up?

A22: The answer is: it depends. It depends on: the type of network(s) you are using between the clients and the server, the strength/performance of the client(s), and the strength/performance of the server being tested.

Try looking at the published results to see the type and number of clients and how they are networked into the server. Then, take one of the clients you have available and determine how much load it can drive and still have roughly 20% idle cycles on the client. Then, make the best guess at how many simultaneous connections the server can do. Then, divide that by your single client value to get a rough estimate of the number of clients you'll need.

Q23: When requesting a large number of connections from the server, it seems to take a long time at the end of a run. Is there any way to speed up this process?

A23: You can retrieve the POST log from the SUT faster by bypassing the web server and doing a direct network copy using rcp (or an equivalent for your OS). To do this, download an alternate version of manager which is available to current benchmark licensees. To request a copy of the alternate version of manager please send an email, along with your license information, to info@spec.org.

To install the new manager:

Then add a line like the following to your rc file. Note: you will need to change the path to rcp and the path to the SUT's POST log to reflect your setup. You may also need to set permissions on the SUT via the .rhosts file to allow access from the prime client; see your OS documentation for more information.

RCP_POSTLOG = "'/usr/bin/rcp $host:/spec/web99/post.log ./post.log'"