Appendix B: Planning for Capacity Requirements
Microsoft Office Communications Server 2007 and Microsoft Office Communications Server 2007 R2 will reach end of support on January 9, 2018. To stay supported, you will need to upgrade. For more information, see Resources to help you upgrade your Office 2007 servers and clients.
This appendix discusses the factors that affect the number of concurrent users that can be supported on a Microsoft® Office Communicator Web Access (2007 release) server. It also presents the results of capacity tests that have been performed on various hardware and software configurations. This information is intended to help administrators plan a Communicator Web Access deployment that meets current and future capacity needs.
When running Communicator Web Access (2007 release) on a server, the following factors affect user capacity:
Usage model
Server RAM
/3 GB switch on the Microsoft Windows Server® operating system
Kernel SSL switch
Communicator Web Access connection type
ASP.NET requestQueueLimit setting
This appendix briefly describes these factors and presents the results of capacity testing on various combinations of these factors. You can use the test results to estimate the capacity of your Communicator Web Access servers and determine whether adjusting certain settings will increase user capacity on your servers.
Baseline Communicator Web Access Configuration
The capacity testing conducted for this appendix used a baseline hardware and software configuration and usage model. The maximum number of concurrent users that could be sustained in this environment was tested, and then various adjustments to the baseline environment were tested to determine the effects on capacity.
This section describes the baseline hardware and software configuration and usage model that were used in the capacity testing scenarios. The baseline configuration is based on the recommended minimum requirements for the Communicator Web Access server.
Baseline Configuration
For this appendix, Capacity was tested on a server that met the standard Communicator Web Access (2007 release) hardware requirements outlined in Table 1. The standard software configuration outlined in Table B-1 was used as the baseline for capacity testing purposes.
Table B-1. Baseline Communicator Web Access (2007 release) Server Configuration
Physical Configuration | |
---|---|
RAM |
4 GB |
CPU |
3.0 GHz dual processors (Hyperthreading enabled) |
Network bandwidth |
100 megabit |
Load balancer offloading SSL |
No |
Software Configuration |
|
/3G switch |
Off |
Kernel SSL |
Off |
requestQueueLimit for ASP.NET |
8000 (you must change the default to 8000) |
Communicator Web Access connection type |
HTTPS |
Collocation with other virtual server |
No |
Collocation with Office Communications Server |
No (Not supported) |
Virtual memory size |
8 GB |
Communicator Web Access logging (retail tracing) |
Off |
Usage Model
The Communicator Web Access usage model is based on the Office communicator 2007 usage model, and includes the following assumptions:
All users are simultaneously active and logged on. This is a conservative estimate that approximates the highest impact scenario.
Users have an average of 50 contacts in their Contacts list and an equal number of users watching their presence.
Users are logged on to a single device.
Each user participates in two IM sessions per hour.
The duration of each IM session is 5 minutes.
Table B-2 lists capacity performance numbers for a Communicator Web Access Server deployment with this usage.
Table B-2: Performance Metrics
Criteria | Minimum |
---|---|
Number of endpoints per server |
4250 |
Percentage of internal users in contact list |
70% |
Percentage of legacy users |
15% |
Percentage of Federated users |
15% |
Average number of contacts per user |
50 |
Hours logged on per user per day |
12 |
Presence updates per user per day |
82 |
IM conversations per user per day |
24 |
Number of messages per session |
10 |
Sign-ins in 12 hours |
2 |
IM sessions per hour |
2 |
Number of INFOs per session (is-typing) |
10 |
Average Number of participants in a multiparty session |
3 |
Number of presence queries per user per day |
30 |
User searches per day |
31 |
Contact changes per user per day |
13 |
Factors Affecting Communicator Web Access Capacity
A number of hardware and software factors can be adjusted to help increase the maximum number of concurrent users that a Communicator Web Access server can support. This section describes the hardware and software factors that we studied and discusses their impact on capacity.
Hardware Factors
We studied the effect of changing CPU speed, network bandwidth, and available RAM on system capacity. Changing the CPU speed and network bandwidth did not appear to have a significant impact on Communicator Web Access capacity. Of the three hardware factors, Increasing RAM had the greatest impact on the capacity of the server.
Software Factors
The following software factors affect Communicator Web Access server capacity. These factors and settings were adjusted during capacity testing to determine their impact on the maximum number of users that a server could support.
Windows Server /3GB Switch
Kernel SSL switch
ASP.NET requestQueueLimit
Communicator Web Access (2007 release) server connection type
Collocating Communicator Web Access (2007 release) and Office Communications Server 2007
The following sections describe each of these software factors and how they affect Communicator Web Access capacity.
Windows Server 2003 /3GB Switch
By default, Windows Server 2003 allocates 2 GB of virtual memory to the system kernel and 2 GB to user-mode processes. You can, however, cause the operating system to allocate 3 GB of virtual memory to user-mode processes and 1 GB to the kernel by setting the /3GB switch on that server. Setting the /3GB switch increased the capacity of the Communicator Web Access server.
To set the /3GB switch in Windows Server 2003
Right-click My Computer, and then click Properties.
In the System Properties dialog box, click the Advanced tab.
In the Startup and Recovery area, click Settings.
In the Startup and Recovery dialog box, in the System startup area, click Edit. This action opens the Boot.ini file in Notepad.
In the [Operating Systems] section, at the end of the startup line that includes the /fastdetect switch, type /3GB.
Save the changes, and then close Notepad.
Click OK two times to close the dialog boxes, and then restart the computer for the change to take effect.
For more information about the /3GB option, see the following articles:
"Available switch options for the Windows® XP and the Windows Server 2003 Boot.ini files" at https://r.office.microsoft.com/r/rlidOCS?clid=1033&p1=BootSwitch.
"A description of the 4 GB RAM Tuning feature and the Physical Address Extension switch" at https://r.office.microsoft.com/r/rlidOCS?clid=1033&p1=PAEswitch.
Kernel SSL switch
Windows Server 2003 SP1 or later provides the option of running SSL (Secure Sockets Layer) in kernel mode. User mode SSL is the default. The kernel mode feature improves SSL performance by moving encryption and decryption operations to the kernel, thereby reducing the number of transitions between kernel mode and user mode. The kernel mode also reduces the memory consumption of server-side processes so that more memory is available to Communicator Web Access. Although moving encryption and decryption operations to the kernel can increase CPU usage, for Communicator Web Access the benefits of additional memory outweigh any disadvantages associated with higher CPU usage. Enabling kernel mode SSL disables user mode SSL and requires the HTTP service to be restarted to take effect. Kernel mode SSL is controlled by the EnableKernelSSL registry value.
To enable kernel SSL
Open Registry Editor.
Go to the following registry key:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Create a new value named EnableKernelSSL in this location, set the type to REG_DWORD, and set the data value to 1.
Restart the HTTP service.
ASP.NET requestQueueLimit
Requests for ASP.NET are queued over a pipe between IIS and the ASP.NET worker process. As clients connect to the Communicator Web Access server, ASP.NET requests accumulate on the server. The default limit for the queue at the process level is 5000, which can be reached quickly, especially as the number of users approaches 4500. The limit can be specified in the machine.config file by the requestQueueLimit attribute in the processModel element, with the following default setting:
<processModel autoConfig=true" />
When this limit is reached, ASP.NET returns the message "503 – Server Too Busy" to new requests. You can change the requestQueueLimit setting by modifying the processModel element in the machine.config file.
To change the requestQueueLimit setting
In Windows Explorer, go to the following folder: *<drive>:\*WINDOWS\Microsoft.Net\Framework\v2.0.50727\CONFIG.
Open the machine.config file in a text or XML editor.
Locate the processModel element and update the requestQueueLimit entry. Use either of the following two examples.
Example 1. Replace the default <processModel autoConfig="true"> element with the following entry and modify the requestQueueLimit setting:
<processModel enable="true" requestQueueLimit="8000" />
Example 2. Modify the requestQueueLimit setting in the existing processModel element:
<processModel enable="true" timeout="Infinite" idleTimeout="Infinite" shutdownTimeout="0:00:05" requestLimit="Infinite" requestQueueLimit="8000" restartQueueLimit="10" memoryLimit="60" webGarden="false" cpuMask="0xffffffff" userName="machine" password="AutoGenerate" logLevel="Errors" clientConnectedCheck="0:00:05" comAuthenticationLevel="Connect" comImpersonationLevel="Impersonate" responseRestartDeadlockInterval="00:09:00" responseDeadlockInterval="00:03:00" <!-- In the .NET Framework version 2.0, the next two attributes are set to 20. --> maxWorkerThreads="25" maxIoThreads="25" />
Communicator Web Access Server Connection Type
Although Communicator Web Access supports the use of an HTTP connection between the client and server, we recommend that this HTTP traffic be secured by using SSL (HTTPS). Using SSL increases the load on the Communicator Web Access server, because the server must perform decryption. To demonstrate the impact on server capacity, two of the capacity testing scenarios used HTTP instead of HTTPS.
Other Factors Affecting Communicator Web Access Capacity
The number of legacy and federated users that a Communicator Web Access user has in his or her Contact list also affects capacity. After some investigation we have come upon this formula which gives us the relationship between capacity (which has a constant value of 90,000) and types of users in the user's contact list.
Capacity = 3*x + AvgLC*x + AvgFC*x + AvgConf*x
Where
x = Number of users
AvgLC = Average Legacy contacts per user
AvgFC = Average federated contacts per user
AvgConf = Average conference per user
Capacity = 90,000 (does not change)
As the average number of legacy contacts and federated contacts per user is reduced, the total number of users supported for a given capacity, increases.
For example, Contoso decides that they will not have any legacy contacts or federated contacts and, on average, the number of concurrent conferences per user will not be greater than 2. Substituting these values into the formula above yields:
3*x + 0+ 0 +2*x = 90,000
Hence x = 18,000
Contoso determines the number of user for the server under these conditions is 18,000 users. The server theoretically should be able to scale up to 18,000 users under these conditions.
On the other hand, if Contoso users on average have 500 legacy contacts, 500 federated contacts, and will participate in 5 conferences, on average, then using the formula yields:
3*x + 500*x + 500*x+ 5*x = 90,000
Hence x = 89 (rounded down to nearest integer)
In this case, Contoso determines that the server should handle no more than 89 users under these conditions.
Determining How Number of Users Affects Capacity
To illustrate the effect of an increased number of users on CPU and memory usage, a Communicator Web Access test deployment with the usage model previously described was tested as follows:
Initialize testing with 3000 users signed in.
Increase the number of users by increments of 250 until errors were received.
The following variables remained constant during testing:
3.0 GHz dual processor with Hyperthreading enabled
100 Megabit network
8 GB virtual memory paging file
Tracing not enabled (CPU intensive)
4 GB RAM (Quad-Channel, DDR2, Full Buffered DIMM, 1066 FSB)
3 GB switch Off
Kernel-Mode SSL Off
HTTPS connection
8000 RequestQueueLimit in ASP.NET
Table B-3 summarizes the results.
Table B-3: Number of Users on Memory Used and CPU % Used
Users | Avg. Memory | Max. Memory | Min. Memory | Avg. CPU | Max. CPU | Min. CPU |
---|---|---|---|---|---|---|
3000 |
940 MB |
1165 MB |
480 MB |
21% |
34% |
3% |
3250 |
1007 MB |
1165 MB |
836 MB |
21.8% |
39% |
9.7% |
3500 |
1031 MB |
1175 MB |
805 MB |
27.9 % |
46.4% |
8.9% |
3750 |
1060 MB |
1181 MB |
853 MB |
33% |
55% |
11% |
4000 |
1089 MB |
1201 MB |
791 MB |
36% |
59% |
10% |
4250 |
1121 MB |
1213 MB |
853 MB |
56% |
78% |
24% |
Conclusions of the Test
It is important to note that on a 32 bit machine, you can have a maximum of system memory (RAM) of only 4 GB (2 raised to the power of 32 – 1). By default, on any Windows machine, 2 GB is allotted for kernel and other processes. In the case of only one process running at a time, a maximum of 2 GB can be used. If that single running process is built on .NET, .NET limits internal cache of running processes (such as garbage collector and so on) to 0.8 GB. This .NET limit effectively reduces the theoretical maximum 2 GB to 1.2 GB that the Communicator Web Access 32 bit server can use.
With this limitation in mind, notice that in the preceding table, with 4000 users an average memory of 1089 MB is used. This is about 88% of the total memory based on the 1.2 GB figure; a much higher percentage than would be produced using 2GB as the total memory to calculate percent memory usage.