休眠服务器脚本的响应时间



我想弄清楚如果脚本需要超过1秒才能完成,gwan是如何响应的。

为此,我在hello.c示例中使用了sleep()函数:

#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得到的响应时间是>= 5秒,正如预期的那样。

然后,我运行了一个Weighttp并发测试,这是我从Chrome得到的响应时间,以毫秒为单位。
这是缓存问题吗?5秒钟的睡眠时间都去哪儿了?谢谢。

您的sleep(5);测试是毫无意义的(充其量),并且,正如预期的那样,G-WAN 超时阻塞脚本避免阻塞服务器,因为脚本有bug。

如果阻塞servlet在并发下使用,就像您稍后所做的那样,然后,而不是无意义的每次执行超时(这将花费时间),G-WAN 标记为该servlet有bug,并且不再执行它。

这个阻塞问题在一个更有趣的测试中不会存在:看看G-WAN如何在不阻塞的情况下提供10秒的系统PING

如果你有一个脚本需要5秒来完成它的工作,那么你不应该等待5秒。阻塞服务器线程是最不明智的做法。

如果你在另一个服务器上这样做,比如说,使用像Nginx这样的单线程程序,这只会阻止新的连接被处理:你的服务器会死。

G-WAN做得更好,因为(a)它使用多个线程,(b)因为它有专用的异步接口,见下文。

对于跨越很长时间的G-WAN提供的应答:

    一个Comet API(参见Comet .c示例)
  1. 一个流API(参见stream1/2/3.c示例)
  2. 一个透明的异步接口,以避免阻塞I/o。

因此,如果您想了解G-WAN如何处理真实的慢脚本,那么编写一些实际的代码。

相关内容

  • 没有找到相关文章

最新更新