Performance troubleshooting in Project Server 2013

Summary: Read troubleshooting information for common bottlenecks and their causes in Project Server 2013.
Applies to: Project Server 2013

During performance testing, several different common bottlenecks can be revealed. A bottleneck is a condition in which the capacity of a particular constituent of a farm is reached. This causes a plateau or decrease in farm throughput.

By monitoring your performance using the guidelines specified in the Performance Monitoring section, you may be able to better identify which bottlenecks are impacting the perceived performance of your Project Server deployment.

Common bottlenecks, causes, and resolutions

The following table lists some common bottlenecks and describes their causes and possible resolutions:

Bottleneck Cause Resolution
Database contention (locks)
Database locks prevent multiple users from making conflicting modifications to a set of data. When a set of data is locked by a user or process, no other user or process can modify that same set of data until the first user or process finishes modifying the data and relinquishes the lock.
To help reduce the incidence of database lock contention you can:
Scale up the database server.
Tune the database server hard disk for read/write.
Database server disk I/O
When the number of I/O requests to a hard disk exceeds the disk's I/O capacity, the requests will be queued. As a result, the time to complete each request increases.
Distributing data files across multiple physical drives allows for parallel I/O.
Limit the number of projects and fields shown in a given view, so that limit the amount of data requested from the Database server.
Try to limit the number of custom fields you utilize, especially at the task level. Formula fields at the task level are particularly costly in terms of database server disk I/O when performing save operations from Project Professional.
Front-end web CPU utilization
When a WFE is overloaded with user requests, average CPU utilization will approach 100 percent. This prevents the WFE from responding to requests quickly and can cause timeouts and error messages on client computers.
This issue can be resolved in one of two ways. You can add additional WFE servers to the farm to distribute user load, or you can scale up the Web server or servers by adding higher-speed processors.
Server Memory Utilization
When you have a substantial number of large queue jobs executing, the server memory utilization can spike.
More complex server side scheduling calculations, or evaluation of formula custom fields, can also consume substantial memory resources.
As a result, the time to complete each request increases.
Monitor at which tier memory usage is a bottleneck:that is, is the memory scarcity happening on the Application server, the front-end web server, or the database server.
To resolve the lack of memory there are two options:
Purchase and install additional memory for that tier.
Purchase additional application servers to handle the load.
Active Directory Sync
Project Server users and resources can be synchronized with the users of the service across multiple domains and forests. This feature helps administrators with tedious tasks, such as manually adding large numbers of users, updating user metadata such as email addresses, and deactivating users who no longer require system access. Active Directory synchronization can be done manually or on an automated schedule. The process of synchronization is resource intensive
It is best to run Active Directory Sync during non-peak user usage periods. That way, Active Directory Sync will not degrade the perceived performance of users.
In addition, try to avoid heavily nested groups, as they increase the complexity of the sync that must be performed, and result in longer sync processes.
Application Server CPU
Application Server CPU can be hit hard when:
Scheduling complex projects.
Evaluating formulas on complex projects/
Running portfolio analyses on a large number of projects with Time-phased Resource Planning analysis turned on.
Monitor the Application Server's CPU usage, and if it seems that it is utilizing a high percentage of its CPU resources, then add an additional Application Server to your topology to distribute the load.
Note that adding an additional Application Server will add additional threads that could cause increased load on the Database Server. This could create a new bottleneck on the database server, which may be resolved by allowing fewer Job Processor Threads in the Queue Settings.
Database Server CPU
Usually, database server CPU spikes when try to load views that comprise of a large number of projects, and a large number of fields shown. This will reduce the perceived user response time when that view is applied.
Limit the number of projects and the number of fields shown in a given view.

See also

Overview of performance and capacity planning in Project Server 2013

Capacity planning strategy for Project Server 2013

Performance and capacity hardware recommendations for Project Server 2013

Scaled-up and scaled-out topologies in Project Server 2013

Optimize performance in Project Server 2013

Performance counters in Project Server 2013

Performance troubleshooting in Project Server 2013

Typical Datasets (Project Server 2013)