on 09-05-2011 01:22 PM
Introduction
Many customers have Vault Cache configured to download all or part of an end-users archive (they have the Desktop Policy set to “Store all Items”). Downloading a large archive or even a subset of it, can take quite some time. Sometimes one of the issues is BITS. This article will help test BITS so you can eliminate it from your investigations.
Detail
BITS is Microsoft’s Background Intelligent Transfer Service, and was first discovered in Microsoft Windows with the Automatic Updates feature. This is where updates to Windows were trickled down from either Microsoft or an internal Windows Update server to end-user workstations (and then installed, or users notified). Bandwidth is automatically throttled with BITS and it supports suspend and resume.
To test BITS what we can do is set up a file of say 100 Mb in size on the Enterprise Vault server where the users archive is located, and from the end-users workstation we can use BITSADMIN to download that file. During the download we can monitor the progress.
Simple!
1/ Creating a 100 Mb file on the EV Server
I nearly always use the Windows Resource Kit tool called creatfil.exe
creatfil testbitsfile.txt 102400
That will create a 100 Mb file in the current folder, called testbitsfile.txt
For our testing, lets first of all try it top level of the default web site, in my case that’s c:\inetpub\wwwroot.
2/ Checking BITS on the client
For this you need to use BITSADMIN. When you run it with /list /verbose you will see :
C:\>bitsadmin /list /verbose
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
Listed 0 job(s).
That’s from a Windows XP workstation.
3/ Creating the job
Using BITSADMIN do the following :
C:\>bitsadmin /create /download testjob
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
Created job {EA0CC157-1C36-4987-A121-755B648C838A}.
You can then see basic information about the job :
C:\>bitsadmin /list /verbose
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
GUID: {EA0CC157-1C36-4987-A121-755B648C838A} DISPLAY: 'testjob'
TYPE: DOWNLOAD STATE: SUSPENDED OWNER: EV\xyz1
PRIORITY: NORMAL FILES: 0 / 0 BYTES: 0 / 0
CREATION TIME: 9/5/2011 5:41:46 AM MODIFICATION TIME: 9/5/2011 5:41:46
COMPLETION TIME: UNKNOWN ACL FLAGS:
NOTIFY INTERFACE: UNREGISTERED NOTIFICATION FLAGS: 3
RETRY DELAY: 600 NO PROGRESS TIMEOUT: 1209600 ERROR COUNT: 0
PROXY USAGE: PRECONFIG PROXY LIST: NULL PROXY BYPASS LIST: NULL
DESCRIPTION:
JOB FILES:
NOTIFICATION COMMAND LINE: none
CUSTOM HEADERS: NULL
Listed 1 job(s).
At this time we then add the file(s) to the job.
C:\>bitsadmin /addfile testjob http://evault1/testbitsfile.txt c:\testbitsfile.txt
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
Added http://evault1/testbitsfile.txt -> c:\testbitsfile.txt to job.
Now we should see :
C:\>bitsadmin /list /verbose
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
GUID: {FC300DCE-C4B6-406B-AAB2-5A58849FBCB0} DISPLAY: 'testjob'
TYPE: DOWNLOAD STATE: SUSPENDED OWNER: EV\xyz1
PRIORITY: NORMAL FILES: 0 / 1 BYTES: 0 / UNKNOWN
CREATION TIME: 9/5/2011 5:48:24 AM MODIFICATION TIME: 9/5/2011 5:48:35 AM
COMPLETION TIME: UNKNOWN ACL FLAGS:
NOTIFY INTERFACE: UNREGISTERED NOTIFICATION FLAGS: 3
RETRY DELAY: 600 NO PROGRESS TIMEOUT: 1209600 ERROR COUNT: 0
PROXY USAGE: PRECONFIG PROXY LIST: NULL PROXY BYPASS LIST: NULL
DESCRIPTION:
JOB FILES:
0 / UNKNOWN WORKING http://evault1/testbitsfile.txt -> c:\testbitsfile.txt
NOTIFICATION COMMAND LINE: none
CUSTOM HEADERS: NULL
Listed 1 job(s).
4/ Suspend and Resume the job
To start the job, you actually “resume” it :
C:\>bitsadmin /resume testjob
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
Job resumed.
You can suspend the job in the same manner, using the /suspend switch, and resume it again… just for testing purposes.
5/ Monitor the overall download
From the client, you can keep doing BITSADMIN /LIST /VERBOSE, or better still, in another DOS window do :-
BITSADMIN /MONITOR /REFRESH 1
When there are no jobs:
After creating the job:
When download is happening:
14259 is the number of bytes downloaded to date, and will (hopefully!) go up.
When download has finished:
At that time though, if you look at c:\ you won’t see our test file. In order to get that there is one last step – you have to “complete” the job :
C:\>bitsadmin /complete testjob
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
Job completed.
And then we see :
C:\>dir c:\testbitsfile.txt
Volume in drive C has no label.
Volume Serial Number is E4A6-DDDC
Directory of c:\
09/05/2011 05:30 AM 104,857,600 testbitsfile.txt
1 File(s) 104,857,600 bytes
0 Dir(s) 1,086,599,168 bytes free
6/ Review/resolve any errors
If your transfer / monitor window shows an error, then do a /list /verbose, and see what that shows you.. It’s usually quite helpful. Eg :
BITSADMIN version 3.0 [ 7.5.7000 ]
BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
GUID: {0654125B-DAFC-40BC-B248-98E7E8FA67BB} DISPLAY: 'testjob'
TYPE: DOWNLOAD STATE: ERROR OWNER: EV\xyz1
PRIORITY: NORMAL FILES: 0 / 1 BYTES: 0 / UNKNOWN
CREATION TIME: 9/5/2011 5:58:56 AM MODIFICATION TIME: 9/5/2011 5:59:07 AM
COMPLETION TIME: UNKNOWN ACL FLAGS:
NOTIFY INTERFACE: UNREGISTERED NOTIFICATION FLAGS: 3
RETRY DELAY: 600 NO PROGRESS TIMEOUT: 1209600 ERROR COUNT: 1
PROXY USAGE: PRECONFIG PROXY LIST: NULL PROXY BYPASS LIST: NULL
ERROR FILE: http://evault1/testbitsfile2.txt -> c:\testbitsfile.txt
ERROR CODE: 0x80190194 - The requested URL does not exist on the server.
ERROR CONTEXT: 0x00000005 - The error occurred while the remote file was being p
rocessed.
DESCRIPTION:
JOB FILES:
0 / UNKNOWN WORKING http://evault1/testbitsfile2.txt -> c:\testbitsfile.
txt
NOTIFICATION COMMAND LINE: none
CUSTOM HEADERS: NULL
Listed 1 job(s).
You can try copying and pasting the URL in to a web browser to see what happens.
And from a different time in a different place (ie recycling electrons) :
BITSADMIN version 2.0 [ 6.6.2600.2130 ]
BITS administration utility.
(C) Copyright 2000-2004 Microsoft Corp.
GUID: {87AB7825-DEFE-4583-9D52-5F7EEFD01DC8} DISPLAY: get-clienttest.gif
TYPE: DOWNLOAD STATE: ERROR OWNER: l3-af782\robert_wilcox
PRIORITY: NORMAL FILES: 0 / 1 BYTES: 0 / UNKNOWN
CREATION TIME: 11/11/2008 09:31:47 MODIFICATION TIME: 11/11/2008 09:34:25
COMPLETION TIME: UNKNOWN ACL FLAGS:
NOTIFY INTERFACE: UNREGISTERED NOTIFICATION FLAGS: 3
RETRY DELAY: 600 NO PROGRESS TIMEOUT: 1209600 ERROR COUNT: 1
PROXY USAGE: PRECONFIG PROXY LIST: NULL PROXY BYPASS LIST: NULL
ERROR FILE: http://gpkvltstr1.enterprise.veritas.com/enterprisevault/clienttest.gif -> c:\clienttest.gif
ERROR CODE: 0x80190191
ERROR CONTEXT: 0x00000005
DESCRIPTION:
JOB FILES:
0 / UNKNOWN WORKING http://gpkvltstr1.enterprise.veritas.com/enterprisevault/clienttest.gif -> c:\clienttest.gif
NOTIFICATION COMMAND LINE: none
Listed 1 job(s).
We got an error state :
0x80190191 = HTTP 401
0x00000005 = Access Denied
As mentioned previously BITS will automatically throttle bandwidth usage, but for those people who don’t trust Microsoft software, or just want to be control freaks, you can have a Group Policy to throttle it too (and in fact was one of the early Vault Caches cases I worked one, and it caused great issues until it was discovered it was a GPO throttling things!). If the test download that you performed was AMAZINGLY slow, yet connectivity to the EV is good, try (using appropriate credentials) to drag and drop the file using Windows Explorer from the Enterprise Vault server, to the client workstation. If that copy process is nice and quick, then suspect Group Policy interference!
Read more about that here.
Summary
BITS is used heavily for Content Cache data, so testing it, and eliminating it from any potential issues is an important step in getting to the resolution of some problems.
Maybe we’ll use BITS for uploads of data … in the future???
Hi Rob,
I have a client having issues when downloading vault cache content.
I did many check and here is a portion of dtrace where there are many error messages about bits
Did you ever seen this error message, what checks do you think i can do?
The EV server is a Windows 2008 x64 MSCS cluster EV8SP4 archiving exchange 2007 Server.
The client is a XP Pro SP3 with outlook 2003 SP2 EV8.4 add-in.
Thanks for your help.
Luis
30/08/2011 16:04:03.118[6048]: Number of items to download is 0
30/08/2011 16:04:03.244[6048]: Desktop Setting: OVContentDownload
30/08/2011 16:04:03.245[6048]: No Value
30/08/2011 16:04:03.246[6048]: OVContentDownload = 1 [default]
30/08/2011 16:04:03.680[4476]: Insufficient range support, unknown file size30/08/2011
16:04:03.682[4476]: Job Name is 'EV: 2011-07-01 to 2011-09-30'
30/08/2011 16:04:03.684[4476]: Error description is 'Le serveur ne prend pas en
charge le protocole HTTP requis. Le service de transfert intelligent d'arrière plan
(BITS) requiert la prise en charge par le serveur de l'en-tête de protocole Range.
30/08/2011 16:04:03.688[4476]: ERROR - The error was related to the specified remote
file. For example, the URL was not accessible.
30/08/2011 16:04:03.690[4476]: Job Error - Failed
30/08/2011 16:04:03.691[5664]: DTCC: WaitForMultipleObjects: 3
30/08/2011 16:04:03.692[5664]: CONTENT:BUILD: Completed INITIAL Job filename
'2011_07_09_0001.db' state '7'
30/08/2011 16:04:03.694[5664]: CONTENT:BUILD: Stopping download state '7'
30/08/2011 16:04:03.695[5664]: CONTENT: ERROR - Initialisation failed - retry logic
starting
30/08/2011 16:04:03.697[5664]: CONTENT: RETRY logic started reason '302'
30/08/2011 16:04:03.707[5664]: CONTENT:DB: DB file 1 does not exist, error '2'
30/08/2011 16:04:03.708[5664]: CONTENT:STORE: Setting DBId '1' to status '0'
30/08/2011 16:04:03.710[5664]: URL is DeleteJob.aspx
30/08/2011 16:04:03.711[5664]: Sending headers : 'Content-type: application/x-wwwform-urlencoded
Content-length:
79
I've not seen that error before, but it sounds like BITS support isn't enabled/added to IIS on the EV Server.
I would suggest running through the steps in this article in order to test BITS, and report back on your findings.
Hi Rob
Interesting one as usual
I appreciate your continued effort in posting these types of Technical articles and others like the Dtrace basics and advanced . They are an invaluable source of reference
Keep them coming :)
You're welcome.
Hi Rob,
Thanks for your answer.
The next time i'll be at the client office i'll do the checks your recommend here.
I did not search any document on the way how to add bits support for a server, i'll do before i go at my client next time. Do you have a technical document that describe how to add bits server functionnality on EV server?
Nice Article, Thanks for that
BITS is not required on the server. There has been some confusion over this, but I can assure you it is not required on the server in any form.
Yep, you're right. The only bit server side is a little add-on which gives a console view on the server side of things. (Which I've never tried, but I just had a look at the option under Add/Remove Programs)
Did you get any resolution for this by any chance?