Duplicate FCGI_BEGIN_REQUEST records with fastcgi_keep_conn on
|Reported by:||Owned by:||somebody|
|uname -a:||Linux eng004.brandnet.local 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux|
nginx version: nginx/1.1.14
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)
configure arguments: --prefix=. --without-http_rewrite_module --with-zlib=/home/BRANDNET/sconger/temp/zlib-1.2.6/
When experimenting with the 'fastcgi_keep_conn' option, I'm seeing a periodic issue with getting two records identical FCGI_BEGIN_REQUEST records with the requestIdB1 and requestIdB0 bytes set to the same value on the same connection.
The logging on our application side shows this:
Conn 1 Duplicate request ID (1) received from Web Server. Request ignored.
Conn 1 Record: FastCGIRecord[type=BEGIN_REQUEST,requestID=1,contentLength=8,content=<empty>]
Last processed: FastCGIRecord[type=BEGIN_REQUEST,requestID=1,contentLength=8,content=<empty>]
Obviously, this could be a problem on our side, but I debugged for quite a while and it looks like we are receiving a duplicate record. We have successfully used fast CGI with persistent connection with another web server.
This showed up when running a test program that sent 500,000 test GET requests. It only happens 5 to 8 times in such a test. The practical side effect is that those 5 to 8 GET requests time out as we're ignoring the seemingly duplicate FCGI_BEGIN_REQUEST record.
I don't see anything getting logged in nginx's logs when the issue appears and we don't see any issues if we comment out 'fastcgi_keep_conn on;' in the configuration.