Apache (ab):mod_fcgid 比 mod_cgi 慢 4 倍
Apache (ab): mod_fcgid 4x slower than mod_cgi
模块用于:常规 cgi + 快速 cgi
LoadModule cgi_module modules/mod_cgi.so
LoadModule fcgid_module modules/mod_fcgid.so
常规和快速 cgi 的测试文件夹。
DocumentRoot "/test"
<Directory "/test/rc">
Require all granted
Options +ExecCGI
SetHandler cgi-script
</Directory>
<Directory "/test/fc">
Require all granted
Options +ExecCGI
SetHandler fcgid-script
</Directory>
C 测试脚本:常规 cgi + 快速 cgi(命名:1.c)
常规 cgi:
#include <stdio.h>
int main(void) {
printf("Content-Type: text/plain;\n\n");
printf("ttt\n\n");
return 0;
}
fcgi(快速 Cgi)
#include <stdio.h>
#include <fcgi_stdio.h>
int main(void) {
while (FCGI_Accept() >= 0) {
printf("Content-Type: text/plain;\n\n");
printf("ttt\n\n");
return 0;
}
}
常规 cgi 基准测试:(3.61 秒)
ab -n 10 -c 10 http://<ip>/rc/1
Time taken for tests: 3.613 seconds
具有快速 cgi 的基准测试:(13.23 秒)
ab -n 10 -c 10 http://<ip>/fc/1
Time taken for tests: 13.233 seconds
你应该调用 FCGI_Finish()
而不是 return 0;
,否则你的程序在退出前只会处理 一个 请求。
模块用于:常规 cgi + 快速 cgi
LoadModule cgi_module modules/mod_cgi.so
LoadModule fcgid_module modules/mod_fcgid.so
常规和快速 cgi 的测试文件夹。
DocumentRoot "/test"
<Directory "/test/rc">
Require all granted
Options +ExecCGI
SetHandler cgi-script
</Directory>
<Directory "/test/fc">
Require all granted
Options +ExecCGI
SetHandler fcgid-script
</Directory>
C 测试脚本:常规 cgi + 快速 cgi(命名:1.c)
常规 cgi:
#include <stdio.h>
int main(void) {
printf("Content-Type: text/plain;\n\n");
printf("ttt\n\n");
return 0;
}
fcgi(快速 Cgi)
#include <stdio.h>
#include <fcgi_stdio.h>
int main(void) {
while (FCGI_Accept() >= 0) {
printf("Content-Type: text/plain;\n\n");
printf("ttt\n\n");
return 0;
}
}
常规 cgi 基准测试:(3.61 秒)
ab -n 10 -c 10 http://<ip>/rc/1
Time taken for tests: 3.613 seconds
具有快速 cgi 的基准测试:(13.23 秒)
ab -n 10 -c 10 http://<ip>/fc/1
Time taken for tests: 13.233 seconds
你应该调用 FCGI_Finish()
而不是 return 0;
,否则你的程序在退出前只会处理 一个 请求。