Title: Resources for identifying performance issues
Author: WordPress VIP Documentation
Published: January 10, 2024
Last modified: December 8, 2025

---

 1. [Performance](https://docs.wpvip.com/performance/)
 2. Resources for identifying performance issues

#  Resources for identifying performance issues

Many performance issues can be identified with available performance analysis tools.
Once these performance issues are identified, developers should work towards correcting
them.

## HTTP request logs

[HTTP request Log Shipping](https://docs.wpvip.com/logs/log-shipping/) provides 
request logs for a site and can be [analyzed with a variety of tools such as GoAccess](https://docs.wpvip.com/logs/log-shipping/analyze-with-goaccess/).
Logs include the page generation time, response code, and cache status for requests.

By analyzing a site’s traffic patterns, the slowest requests can be identified and
attention can be focused on the code that needs to be optimized.

Review request logs for:

 * The presence of significantly slower requests
 * Patterns of bot activity or bot requests (usually through the logged User Agents)
   for pages that do not need to be indexed (e.g. bots should be requesting sitemaps
   and individual posts, but not crawling through every page of an archive or tag)
 * The presence of [cache busting URL parameters](https://docs.wpvip.com/caching/page-cache/query-parameter-caching/)
 * Requests for files in the WordPress `/uploads` directory, especially large images
   without resize parameters
 * Requests for invalid URLs that could be coming from page templates or Javascript,
   and might manifest as [HTTP response status code `404`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)
   or other status codes in the `400`–`5xx` range

## Insights & Metrics

[The Insights & Metrics panel](https://docs.wpvip.com/performance/insights-metrics/),
located in the application view of the VIP Dashboard, provides insights into the
performance, health, and usage of an application. 

Displayed data and metrics provide insights into an environment’s cache hit rates,
frequency of inefficient queries made against the primary database, quality of performance
of responses to HTTP requests, as well as markers for events such as code deployments
and software updates.

## Local (or non-production) environment

Though a local environment is not an absolute replica of a VIP environment, it can
provide insights and understanding of the code executed during a request.

 * The MySQL `EXPLAIN` command will be more accurate and can reveal inefficient 
   queries if a recent [database backup](https://docs.wpvip.com/databases/backups/)
   of a production environment has been [imported to a VIP Local Development Environment](https://docs.wpvip.com/vip-local-development-environment/add-database-content/).
 * End-to-end tests can be run if a [VIP Local Development Environment is running with a clone of the application’s GitHub repository](https://docs.wpvip.com/vip-local-development-environment/load-application-code/).
 * [Xdebug](https://xdebug.org/) can be used to profile a request and identify operations
   that require greater amounts of time. In the VIP Local Development Environment,
   Xdebug can be enabled with the setup wizard or by passing `--xdebug=y` with the`
   [vip dev-env create](https://docs.wpvip.com/vip-cli/commands/dev-env/create/)`
   or `[vip dev-env update](https://docs.wpvip.com/vip-cli/commands/dev-env/update/)`
   commands. 

## New Relic

[New Relic is an Application Performance Monitoring tool](https://docs.wpvip.com/performance/new-relic/)
that shows current and historical average page generation times. New Relic can also
capture traces of slow requests. New Relic also has a summary of database queries,
object cache usage, and remote requests, making it possible to identify potential
issues specific to a table, function, or API endpoint.

New Relic can capture a trace if a particular URL has an intermittently slow issue
due to object caches expiring. Traces can be reviewed to determine where the most
time is being spent.

[The Apdex score on the APM Summary page](https://docs.newrelic.com/docs/apm/agents/manage-apm-agents/agent-data/triage-run-diagnostics/#review-your-key-metrics)
and [data on the Transactions page](https://docs.newrelic.com/docs/apm/apm-ui-pages/monitoring/transactions-page-find-specific-performance-problems/)
are useful for identifying root causes for user dissatisfaction (usually the worst
performing pages when taking into account transaction volume). If browser monitoring
is enabled, [New Relic can provide insights into the aspects of page performance](https://docs.newrelic.com/docs/browser/new-relic-browser/browser-pro-features/page-views-examine-page-performance/)
that most need improvements. Review page performance statistics for the most visited
pages, such as page load time, average page load time, and throughput (calls per
minute).

Reported PHP errors, warnings, and notices can point out issues in code. The fewer
code issues that exist on a regular basis, the easier it will be to identify, review,
and resolve _new_ issues. Ideally, an application routinely generates no errors,
and few to no warnings.

## PHPCS

[Performing a local PHP_CodeSniffer (PHPCS) scan](https://docs.wpvip.com/php_codesniffer/run-against-code/)
of the code in an application’s wpcomvip GitHub repository will flag many potential
performance and security issues.

## Query Monitor

 [Query Monitor](https://docs.wpvip.com/performance/query-monitor/) can be helpful
to identify PHP errors, slow queries, remote requests, and other anomalies on specific
pages. Query Monitor also reports the page generation time.

During development, [Query Monitor’s Profiling and Logging functionality](https://querymonitor.com/wordpress-debugging/profiling-and-logging/)
can help keep track of feature performance before deploying code to production.

## Runtime Logs

[Runtime Logs reports PHP errors](https://docs.wpvip.com/logs/runtime-logs/) including
fatals, warnings, and notices for WordPress applications, and output sent to `stdout`
or `stderr` for Node.js applications.

## Slow Query Logs

[Slow Query Logs](https://docs.wpvip.com/logs/slow-query/) provide the ability to
identify queries made by an application that take an unusually long time to execute.
Slow queries should be optimized in order to improve database efficiency and overall
responsiveness of an application.

Any query that consistently requires more than 100ms to complete should be evaluated
for performance optimization. Slow Query Logs provide the the request URL and statistics
related to the query. Query Monitor can be useful for more in-depth analysis of 
the query made by the URL and determine the impact that the query has on page generation
time.

If it is determined that a slow query is consistently run by an uncached request,
performance of the request should be improved by adding object caching to the underlying
code, or by offloading the query to [Enterprise Search](https://docs.wpvip.com/enterprise-search/).

Last updated: December 08, 2025