As you can see the error of permission page getting timeout is pretty common and happens at random when the server doesn't have enough resources, time and configuration to complete the request. At first it seem like some kind of Drupal issue where it is unable to process and render the page correctly but at most times its the PHP configuration that is behind it.
Let's try to understand the Advanced PHP Configuration needed for this, need to configure the following parameters to fix this :
Max Execution Time (seconds)
- Max execution time (max_execution_time) is a time limit on how long a PHP script can run. It is a way hosting providers can limit the use and abuse of resources.
- In this scenario the max_execution_time should be set to 300 seconds.
Memory Limit (MB)
- The PHP memory limit is the maximum server memory each PHP script can extend. As per the PHP documentation "This sets the memory in bytes that a script is allowed to designate. This makes a difference in preventing ineffectively composed scripts from eating up all accessible memory on a server."
- In this scenario the the memory_limit should be set to 250MB
OPcache size (MB)
- OPcache is a type of OPcode caching. OpCode Caches are a performance enhancing extension for PHP. They do this by injecting themselves into the execution life-cycle of PHP and caching the results of the compilation phase for later reuse. This kind of caching compiles human-readable PHP code to code your server understands which is called opcode. This occurs when the PHP file loads on a web page for the first time. Then, it’s saved to the server’s memory for faster loading at each subsequent page visit.
- In this scenario the opcache_size should be set to 160MB
OPcache Interned strings buffer (MB)
- The interned String buffer is the amount of the PHP OPcache memory that is reserved for storing OPcache Interned Strings. The amount of memory allocated to the Interned Strings buffer will reduce the total amount of memory available for PHP OPcache.
- In this scenario the opcache_interned_buffer should be set to 32MB
APCu size (MB)
- This sets the amount of memory allocated to APC User cache. This is a user-accessible user cache. This is a smaller cache relative to PHP OPCache, and most applications will run well with the default value (32MB)
- In this scenario the APCu size should be set to 32MB.
Max Input Variables
- Sets the maximum number of input variables to accept. It limits the number of inputs you can set when posting forms. This limit is applied seperately to $_GET, $_POST and $_COOKIE inputs.
- In this scenario the max_input_vars should be set to 1000.
Max POST request size (MB)
- Sets the maximum aceptable size of a POST request.
- In this scenario the max_post_request_size should be 256MB.
Memcached memory Limit (MB)
- Sets the maximum amount of memory that can be allocated to the memory cache.
- In this scenario the memcached_memory_limit should be 64MB.