响应睡眠gwan服务器脚本的时间

时间:2013-03-04 13:24:48

标签: timeout execution g-wan

我想弄清楚如果脚本花费的时间超过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秒睡眠时间已经消失了? 感谢。

1 个答案:

答案 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长期提供的回复:

  1. Comet API(请参阅comet.c示例)
  2. 流媒体API(请参阅stream1 / 2 / 3。c示例)
  3. 一个透明的异步接口,以避免阻塞I / O.
  4. 因此,如果您想了解G-WAN如何处理现实慢速脚本,那么请编写一些真实的代码。