Sometimes a feature you've extensively tested on non-production (dev, test, qa) works, but it doesn't work on production. The usual reason is that Enterprise and Site Factory customers have highly available infrastructure. That means either two dedicated instances, or multiple web instances plus a database instance, and in some cases, a separate file system instance. Code is identical (or should be! If not, file a support ticket with us) on each web instance or dedicated instance, but they share resources, such as the file system (and in the case of web instances, the database instance), which is in one place only. That said, the settings could be different between production and non-production.
Things to check on each environment:
- Is the PHP version the same?
- Is the PHP memory limit the same?
- Is the temporary file location set correctly? Also, check out our documentation on fixing broken file uploads, and check to see if any modules, especially a custom module you may have written, override the temporary file location setting.
- Is Memcache setup on one environment but not the other?
- Is the content and configuration of the Drupal sites on each environment (more or less) the same?
Differences between non-production and non-production environments:
- Amount of memory and disk space. The memory most affects the amount of PHP processes you can have. Most non-production environments are single instances (with a naming convention of staging-12345). That means they have both the web serving functions, the database system, and the file system all on one instance. This is either spread out (in the case of a setup with web instances), or there's more resources allocated to them (in the case of dedicated instances, and there's failover in that case as well).
- Traffic and usage patterns: Production environments almost always have more traffic hitting them, or have more editors creating content, so the amount of caching by Varnish will be different. That could be something we can help determine if you file a support ticket with us.
It could also be an infrastructure problem. That is, a web instance may be out of rotation unexpectedly, or is failing in some way. Often times we've already alerted you about it, but if not, file a support ticket with us and we'll help you get to the bottom of it.