我想弄清楚如果脚本花费的时间超过1秒,gwan会如何回应。
为此,我在sleep()
示例中使用了hello.c
函数:
#include "gwan.h"
#include <unistd.h>
int main(int argc, char **argv)
{
sleep(5);
static char msg[] = "Hello, ANSI C!";
xbuf_ncat(get_reply(argv), msg, sizeof(msg) - 1);
return 200; // return an HTTP code (200:'OK')
}
我从Chrome获得的响应时间是&gt; = 5秒,正如预期的那样。
然后,我运行了一个Weighttp并发测试,这是我从Chrome获得的响应时间,单位为毫秒(毫秒)。
这是一个缓存问题吗? 5秒睡眠时间已经消失了?
感谢。
答案 0 :(得分:2)
您的sleep(5);
测试毫无意义(充其量),正如预期的那样,G-WAN 超时阻止脚本以避免阻止服务器越野车。
如果阻塞servlet是在并发下使用的,那么你后来就会这样做,而不是每次执行都会毫无意义地超时(这需要时间),G-WAN 标记这个servlet是错误的不再执行它。
通过更有趣的测试不会出现此阻止问题:了解G-WAN如何在不阻止的情况下为10-second system PING 提供服务。
如果您的脚本需要5秒才能完成其工作,那么不应该等待5秒钟。阻止服务器线程是最不聪明的事情。
如果您使用其他服务器执行此操作,并且说使用像Nginx这样的单线程程序,这只会阻止处理新连接:您的服务器将会死机。
G-WAN做得更好,因为(a)它使用多个线程,(b)因为它有专用的异步接口,见下文。
对于G-WAN长期提供的回复: