Server Classes

by Community Manager on 07-07-2011 10:08 AM - last edited on 07-13-2011 11:12 AM by Community Manager

Server classes are used within SOASTA CloudTest to template Server Instances that will be deployed and then torn down in the cloud at test runtime.

SOASTA CloudTest provides default server classes for the Test Server, Results Service, and Monitor services.

In most cases, it is not necessary to define new server classes. However, new classes are easily defined based on the default classes. In customization cases, it is recommended to create a new server class, rather than to modify the default classes. Each class accepts new attributes via an Add button.

For Amazon EC2, CloudTest interacts with the standard instance types include: Large Instance, and Extra Large Instance. CloudTest doesn’t use the EC2 Small Instance type. Additionally, CloudTest provides complete support for instances of the EC2 High Performance Computing cloud and all other AWS instance types, including Cluster Compute Quadruple XL, High-CPU XL, High-Memory Double XL, High-Memory Quadruple XL, and High-Memory XL.

All of the above items have corresponding out-of-the-box server classes accessible within CloudTest via the Central > Server Classes list.

Creating a New Server Class

Note:      SOASTA recommends that you create a new server class for different instance types, rather than modify the default classes.

To get started, select Central list > Server Classes, and then click New. When you do so, the New Server Class dialog box appears.

  1. Enter a name for the new server class. For example, Custom EC2 Test Server Class. This name will appear in the track location drop-down in the Composition Editor.
  2. Enter an optional description.

You can use the InstanceType Setting to define large and extra-large Test Server and Results Server instances. The physical limits of these instances varies by the cloud provider.

  1. In cases where it is necessary, specify a different instance type to incrementally increase the compute power available for deployment. This feature is restricted to Administrators only. Typically, if you have no preference, the default Let CloudTest Decide is suitable.

  1. Optionally, select a service in the drop-down from among Maestro, Monitor, and Results and then click Enabled to activate the Known Settings for the given service. For example, Monitor.

Once a server class is defined, it is available for selection in the Grid Manager on the Server Instances screen's Server Class drop-down.

To specify a different instance type for an existing server class

  1. Select Central > Server Classes.
  2. For an existing server class, select it in the Server Class list.
  3. Click the General tab at the bottom of the workspace.
  4. Select a value from the Instance Type list.
  5. Click Save on the lower panel toolbar.

To use a server class in a grid

    1. Create a new grid or open an existing one (Central list, Grids).
    2. In the Grid Manager, Step 2 (Server Instances page), check Show Advanced Settings.
    3. Specify your server class for Test Server (or Results Service instances) in the drop-down for each location defined in the grid.
    4. Complete the grid configuration.

Refer to Managing Grids and Creating a New Grid.

To use a server class in server instances

  1. Use server instances to create a specified number of test servers. To do so, in the Central list, Server Instances, click New. The Start Cloud Instances dialog box appears.
  2. Select your custom server class in the drop-down. Specify a cloud service location, zone and the number of test servers to create.
  3. Click OK.
 

Service Settings

The Known Settings for the given service are displayed.

The following table lists Known Settings by service:

Test Server (Maestro)
Setting Description Default
HTTP.MaxReceiveContentLength The maximum number of bytes of an HTTP "message body" that will be received. Bytes past this amount will be received and counted, but then discarded. A negative value means no limit. -1 INT
InterServerComm.RetryCount Number of times to retry on failure of Test Server-to-Test Server communications. 10 INT
InterServerComm.SocketTimeout.Test Server Socket timeout, in milliseconds, for Test Server-to-Test Server communications. 60000 INT
InterServerComm.SocketTimeout.Monitoring Socket timeout, in milliseconds, for Test Server-to-Monitor-Service communications. 60000 INT
InterServerComm.SocketTimeout.Repository Socket timeout, in milliseconds, for Test Server-to-Repository communications. 60000 INT
InterServerComm.SocketTimeout.Results Socket timeout, in milliseconds, for Test Server-to-Results-Service communications. 60000 INT
Loader.ThreadsPerCompositionMax The maximum number of threads to allocate to loading of objects from the Repository, per Composition being loaded. Only the number actually needed (up to this maximum) will be used, and it changes dynamically over time as required. These threads are allocated from the Thread Pool. 20 INT
Pool.MaxAdvanceScheduleTime The farthest amount of time (in milliseconds) in the future a task will be assigned to a thread in the pool. This value should be set far enough in the future such that a thread will likely be already ready and waiting when a task's scheduled time comes up, but not so far in advance that threads are held in a wait state (and using up system resources) unnecessarily. 5000 INT
Pool.MaxWorkerCount The maximum number of concurrent threads in the pool. 4096 INT
Pool.MaxWorkerIdleTime The amount of idle time (in milliseconds) after which a thread will terminate itself and be removed from the pool. This allows the pool to shrink down after peak loads. This value should be set high enough to prevent unreasonable thread turnover thrashing, but not so high that idle threads with nothing to do are kept around unreasonably (and using up system resources). 10000 INT
Pool.WorkerRedirectThreshold The smallest amount of time (in milliseconds) in the future a thread's current task can be and have it get pre-empted and assigned to a sooner task. For example, 500 means that if there is a thread assigned to a task scheduled to execute more than 500 ms in the future, it will be pre-empted and assigned to a sooner task if there are no more threads available for that sooner task. 500 INT
Result.WriteThreadsPerCompositionMax The maximum number of threads to allocate to writing of information to the Results Service, per playing Composition. Only the number actually needed (up to this maximum) will be used, and it changes dynamically over time as required. These threads are allocated from the Thread Pool. 10 INT
Monitor
PrivateKey.FilePath The path of the file on the server that contains the Monitor Service private key. There cannot be hard-coded defaults for this setting, which is determined at runtime using the current OS user's home directory. NONE
PublicKey.FilePath The path of the file on the server that contains the Monitor Service public key. There cannot be hard-coded defaults for this setting, which is determined at runtime using the current OS user's home directory. NONE
Results
Batching.bAsyncBatchInserts Enter 1 to have the Results Service perform asynchronous batch inserts (e.g. a memory based queue and a thread pool). Default is synchronous. 0 INT
Batching.counterUpdateFrequency The number of seconds between updates of high-level counters such as virtual user count or number of messages. Short times can lead to contention, especially with multiple Results Services. 10 INT
Export.Result.ChunkSize.Excel Returns the number of objects that will be included in a chunk being exported for spreadsheet format. 2000 INT
Export.Result.ChunkSize.Medium Returns the number of objects that will be included in a chunk of "medium" objects. This setting should only be changed if you are tuning the performance of result exports. 100 INT
Export.Result.ChunkSize.Small Returns the number of objects that will be included in a chunk of "small" objects. This setting should only be changed if you are tuning the performance of result exports. 200 INT
Export.Result.ChunkSize.LargeReturns the number of objects that will be included in a chunk of "large" objects. This setting should only be changed if you are tuning the performance of result exports. 
MemoryTable.max_heap_table_size The max memory that the database layer will use for the MessageFact if memory tables are used. Value in GB. 4 INT
Export.Monitor.ChunkSize Returns the number of objects that will be included in a chunk of monitor data. This setting should only be changed if you are tuning the performance of monitor exports. 200 INT
MemoryTable.UseMemoryTable Enter 1 to use a memory table for the MessageFact table. At completion of the test it will be automatically persisted to disk.  
Batching.writeAggregatesFrequency The frequency, in seconds, of how often to write aggregates to disk. 10 INT
 

You can add additional attribute value pairs to this class by clicking the Add button, entering an Attribute name, and then defining the Value in the entry field. Click Remove to delete a selection.