Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to address : The FastCGI process exceeded configured request timeout error: on IIS 7.5

Tags:

php

iis

My PHP script executes some program on my server IIS 7.5
Takes time about 10 mins to execute but above error in browser.
How to resolve this.

Error:

HTTP Error 500.0 - Internal Server Error
C:\php\php-cgi.exe - The FastCGI process exceeded configured request timeout  

Module  FastCgiModule
Notification    ExecuteRequestHandler
Handler FastCGI
Error Code  0x80070102

php.ini settings:

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0  

max_execution_time = 0
upload_max_filesize = 20M
memory_limit = 128M
post_max_size = 30M

C:\Windows\System32\inetsrv\config\ applicationHost.config file settings for fast-cgi

<fastCgi>
<application  
fullPath="C:\php\php-cgi.exe" activityTimeout = "3600" requestTimeout = "300" />
</fastCgi>
like image 329
BioDeveloper Avatar asked Apr 18 '14 06:04

BioDeveloper


People also ask

How do I enable FastCGI in IIS?

Enable FastCGI Support in IISGo to Server Manager > Roles > Add Role Services. On the Select Role Services page, select the CGI check box. This enables both the CGI and FastCGI services.

How does Fast CGI work?

Basically, FastCGI is a program that manages multiple CGI requests within a single process, saving many program instructions for each request. Without FastCGI, each instance of a user requesting a service causes the Web server to open a new process that gets control, performs the service, and then is closed.


2 Answers

This is sort of a quick explanation of what is going on. When you are using a CGI/FCGI configuration for PHP. The webserver (in this case IIS), routes requests that require php processing to the PHP process (which runs separately from the web server).

Generally, to prevent connections from getting stuck open and waiting (if php process happens to crash) the web server will only wait a set amount of time for the PHP process to return a result (usually 30-60 seconds).

In your configuration you have this:

requestTimeout = "300"

300 seconds = 5 minutes. IIS will cancel the request since your request takes 10 minutes to complete. Simple fix, increase the timeout to something 600 or greater.

Now, running a script for 10 minutes with an http request is not a good design pattern. Generally, http works best with short lived requests. The reason is that timeouts can exist in any part of the process (server, proxy, or client) and the script could be accidentally interrupted.

So, when you have a web application that has a long running job like this, the best way to run it is via console or job queue.

like image 86
datasage Avatar answered Nov 14 '22 22:11

datasage


There is one more setting I found from this source that helped me with the same problem I was having. Copied and pasted:

Open Server Manager

At Server Level (not default Web site)

  • Double click FastCGI Settings
  • open PHP.EXE listed there
  • Monitor changes to file php.ini
  • activity timeout default is 60s - change to 600s or whatever
like image 22
zeta Avatar answered Nov 14 '22 21:11

zeta